O WebService é feito em C# e consigo consumir sem problemas pois passo o ?WSDL (consigo consumir no Emulator).
Agora, uma coisa que não fiz foi definir um IP Fixo para minha máquina e testar por ele.
Talvés o aplicativo ao rodar pelo celular não esteja conseguindo encontrar este IP 10.0.2.2 certo?
provavelmente é isso sim, veja qual o ip da sua maquina e coloque.
Outra Dúvida,
Se o webService estiver rodando localmente no computador, e este computador estiver em um rotiador com IP Fixo definido, eu para acessar via wi-fi(do celular), teria de colocar o IP do rotiador no código certo?
Você coloca o ip que está no servidor.
Ok, Coloco o IP do computador pois o aplicativo não está em um servidor, está local.
Mas se eu tentar acessar via wi-fi, como funcionaria?
Teria de setar o IP da máquina ou o do Rotiador no código?
Obs. Rotiando o Computador para possibilitar o acesso ao webservice
IP da máquina que está seu WebService, pelo menos comigo funciona assim. E olha que já testei com roteador e como o meu celular android fazendo papel de roteador também rs.
Interessante, agradeço seu apoio brother, estou tendo um norte agora.
Assim que chegar em casa vou realizar este teste e posto aqui no forum o resultado.
Espero ajudar quem está ou irá passar por esta situação hehe
Até então muito obrigado!
Boa tarde,
Testei e não deu certo.
A aplicação funciona quando a emulo no virtual device, quando a executo direto no celular dá um erro de TimeOut. Estou utilizando o Ksoap2 para me conectar com um WebService.
Erro:
java.net.SocketTimeoutException: Connection timed out
Disparado quando tenta processar a seguinte linha:
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,5000);
esse 5000 é um tempo que coloquei para ver se passava mas não passou.
O que pode ser??
Você mudou o ip da maquina ? no emulador que ip tava ? o ip da maquina ?
Boa tarde Valeio,
Então, eu troquei o Ip.
coloquei o tempo maior e mudou a mensagem de erro:
java.net.ConnectException: 145.100.200.154/145.100.200.154:80 - Network is unreachable
O código é o seguinte:
private static final String METHOD_NAME = “busca”;
private static final String NAMESPACE = “http://tempuri.org/wsTeste/”;
private static final String SOAP_ACTION = “http://tempuri.org/wsTeste/busca”;
private static final String URL = "http://145.100.200.154/wsTeste/ws.asmx"; //Ip da máquina
String result = "";
public String Convert(String chapa) {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("chapa", "001522");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,5000);
androidHttpTransport.call(SOAP_ACTION, envelope);
if(envelope.getResponse()!=null){
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
result = "NOME: " + response.toString();
}
return result.toString();
} catch (Exception e) {
return e.getMessage();
}
}
Só uma informação:
O mesmo código é executado no Emulador (isto que acho estranho pois funciona no emulador.
Estou com o cabo conectado direto no celular/Computador.
Eu não estou via Wi-fi.
Neste caso, o celular consegue encontrar a rede? pois a mensagem é que ele não conseguiu encontrar, certo?
Cabo ? USB ? Oxe, não funciona não eu acho, tente conectar via wi-fi, o proprio aparelho do android consegue ser o roteador …
Estou com o cabo saindo do Celular conectando direto no Computador (Eclipse aberto em modo Debug).
Neste computador, existe um webService local. A rede é cabeada, não há um access point.
Amigão, me tire uma dúvida por favor.
Se ativar o Wi-fi do celular, no cenário descrito acima, eu consigo me conectar? tentei e não consegui.
Eu primeiramente precisaria estar autenticado nesta rede por wi-fi para conseguir o acesso ou não?
Assim, pelo menos lá em casa dá certo.
Meu aparelho, ele funciona como roteador de Wi-Fi, e lá em casa eu uso o notebook e me conecto com ele normalmente, uso internet e etc.
Então eu pego o ip da maquina, configuro na minha aplicação e pronto.
O meu celular tem também esta fução de rotear com duas opções: ancoragem USB e Ponto de acesso Wi-Fi.
Pelo que estou entendendo, você utilizou seu note para ser o Access Point e se conectou por wi-fi com o celular, então é por isto que passa.
No notebook, você chegou a criar uma rede local ou você joga seu notebook para um switch para este difundir o sinal?
Não fiz nada, apenas conectei e vi o ip e funcionou, mas aqui na empresa tem wi-fi e funcionou também. O pior que essa parte de redes eu não entendo
Mas simplificando, se você tem o servidor e o celular na mesma rede, vai funcionar.
Ahh entendi, não esquenta brother, tá ajudando muito!
Eu vou montar este cenário e postar aqui o mais rápido possível.
manda ai tou curioso pra saber…
Boa tarde Pessoal,
Retornando. Deu certo!
Eu deixo aí um agradecimento especial ao Valeio que me ajudou muito.
Montei o seguinte cenário:
Infra:
Computador com Ip Fixo setado em sua placa de rede + WebService executando localmente + Access Point para propagar uma rede criada.
Android:
No aplicativo, eu tirei aquele IP do Emulator (10.0.2.2) e adicionei o definido na placa de rede do computador.
Então, funcionou.
É cláro que você terá de se conectar à sua rede criada para que isto execute.
Neste momento, o celular não está com o cabo USB conectado ao computador, está apenas via Wi-Fi =)
Um abraço a todos, Deus abençoe!