Estou tendo problemas em conseguir que minha midlet faça uma conexão com meu servidor e retorne um conteúdo qualquer, seja usando o WTK, seja no próprio aparelho celular.
O código que estou usando é este:
conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE);
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0");
conn.setRequestProperty("Accept", "text/comma-separated-values");
conn.setRequestProperty("Content-type","application/x-www-form-urlencoded");
os = conn.openOutputStream();
os.write(prepareParams(params));
os.close();
is = conn.openInputStream();
O pau dá logo na linha do openInputStream.
A mensagem é esta:
java.io.IOException:
Error initializing HTTP Tunel connection:
HTTP 1.0/ 403 Forbidden Server:
squid/2.5 STABLE1
Content-type: text/html
Content-length: 1044
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from xxx.yyy.com.br
Mime-Version: 1.0
Proxy-Connection: close
Procurei no Google sobre “HTTP Tunel” mas não encontrei nada referente a midlets ou coisas assim…
Para acessar a internet, minha máquina é configurada para usar o servidor proxy.
O WTK já está configurado com o endereço e porta.
Com o IE, a pagina é carregada normalmente…
Como assim meu proxy não permite “connect” ? Me explica…
Se meu browser, client de FTP, ICQ, Messenger, enfim, qualquer coisa tá saindo para a internet, porquê eu estou tendo problema com o WTK ?
Abri o arquivo de configuração dele para ver se os valores realmente estão lá (192.168.1.254:3128) e tá tudo certinho…
Eu decidi testar o mesmo código em casa e devido a não ter servidor proxy, funcionou sem problemas.
Consigo fazer o POST e receber a resposta que eu queria do script.
O vilão da estória deve ser alguma configuração de rede da minha máquina, do switcher, ou do próprio Squid.
A outra sintaxe para a URL que vc forneceu eu testei e também não funcionou.
O Telnet também não funcionou…ele congela e não sai disto…
Dando um Ping em xxx.dominio.com.br, consigo uma resposta normal que ele é alcançavel.
Se eu vou no IE e uso a URL, ele faz o GET sem problemas, me retornando a resposta, igual como se eu estivesse em casa, onde tive sucesso em me conectar usando o emulador.
Existe alguma configuração no Windows ou um meio de detectar onde poderia estar o problema ?
Fui no site do SQUID, vasculhei o mesmo a procura daquela mensagem de erro mas nada de encontrar algo…
Após usar um sniffer, vi que sempre a midlet fazia uma requisição HTTP do tipo CONNECT, mesmo que eu especificasse que estava usando HttpConnection.POST.
Após sniffar uma sessão do IE, vi que ele retornava o conteúdo desejado pois ele fazia certinho um POST e não um CONNECT, como minha midlet vinha fazendo.
Após desabilitar então o uso de proxy no WTK e rever as configurações de TCP-IP da minha máquina, tudo funcionou como esperado.
O que deu para perceber de tudo isto é que o WTK 1.04 e 2.0 não trabalham muito bem com a configuração de proxy setada.
Como o meu webserver pode ser acessado internamente sem necessitar do proxy configurado no WTK (pois fica distante de mim fisicamente), pude finalmente conseguir fazer uma conexão usando o emulador.
Já instalei a midlet no meu C55 (sem antes ter algumas dores de cabeça, tb) e tá rodando como esperando.
Quanto ao 2280, este por ser CDMA é outra estória e vou ter mais trabalho.
obrigado a todos que ajudaram a entender o que estava acontecendo.