Problema com conexao Http  XML
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Autor Mensagem
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

Pessoal,

to apanhando faz 1 semana pelo menos

Tô tentando enviar dados do celular pra um servidor meu via http Post.
o código que estou utilizando é o seguinte


o código ASP que estou utilizando no servidor é o seguinte

O estranho aqui é que sempre que faco a chamada pelo celular o ASP salva no banco a data e hora, quer dizer que o celular esta enviando alguma coisa e o servidor esta recebendo. Mas os dados mesmo ele nao salva

Tambem tentei fazer um servlet, mas nao tive sucesso! Alguem teria algum exemplo do que tenho que fazer no lado do servidor? O que posso estar fazendo de errado?



Obrigado!

This message was edited 1 time. Last update was at 09/05/2005 10:45:30

[Email]
EdgarCarmo
What is classpath?

Membro desde: 30/03/2005 13:51:31
Mensagens: 9
Offline

Bem Tiago

Eu uso este tipo de conexão HttpConnection em outra ocasião, não via celular, mas acredito que seja a mesma coisa.
Bem vamos as explicações.

O que vamos fazer é uma conexão via Stream para enviar os dados ao servidor.
No servlet eu recebo os dados através do stream aberto.

Para enviar o objeto


Para receber o objeto


Espero ter ajudado.

A verdade alivia mais do que machuca. E estará sempre acima de qualquer falsidade como o óleo sobre a água." (Miguel de Cervantes)

O importante é estar pronto para, a qualquer momento, sacrificar o que somos pelo que poderíamos. (Autor desconhecido)
[MSN]
raffaele
Debugger
[Avatar]

Membro desde: 23/10/2003 21:06:16
Mensagens: 70
Offline

vc já tentou imprimir no asp o comando SQL que está sendo executado?



http://twitter.com/FragZero
http://www.fragzero.com.br
http://raffaele.blogspot.com
[WWW]
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

Edgar,

O J2ME não tem getOutputStream(); nem BufferedWriter

Mas to testando o exemplo do servlet que voce passou!
[Email]
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

Então raffaele, a linha

Está funcionando pois sempre que aciono o item de menu no celular pra chamar o http, ele insere o seguinte conteúdo no banco


Data/Hora=5/9/2005 10:52:02 AM
IP=200.148.111.160


E quando chamamos esta tela ASP via IE, dá certo e ele insere corretamente.

Tem algo em mente?
[Email]
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

Pelo emulador da Nokia no Ecplise agora deu certo!
Mas pelo celular não
[Email]
EdgarCarmo
What is classpath?

Membro desde: 30/03/2005 13:51:31
Mensagens: 9
Offline

Bem Tiago

Não tenho conhecimento em J2ME ( ), o que eu conhecia era como conversar usando HTTPConnection e Servlet.

Caso tenha mais alguma coisa que possa ajudar... manda uma msg ai...

Abraços e boa sorte.


A verdade alivia mais do que machuca. E estará sempre acima de qualquer falsidade como o óleo sobre a água." (Miguel de Cervantes)

O importante é estar pronto para, a qualquer momento, sacrificar o que somos pelo que poderíamos. (Autor desconhecido)
[MSN]
Jay_Santos
Entusiasta Java

Membro desde: 26/04/2005 19:27:18
Mensagens: 21
Offline

Estou com problemas tambem fazendo envio de dados via POST, segue o código:



Com esse código a página ASP sempre me retorna erro 501 (HTTP_NOT_IMPLEMENTED), caso eu comente a linha this.os.flush() ele retorna HTTP_OK mas sem nenhum dado...

Com get a comunicação funciona sem problemas.

meus dados são curtos, apenas login e senha, entao acho que não deve ser problema de transfer-encoding... Será que alguem pode me ajudar?

Valeu!

This message was edited 1 time. Last update was at 11/05/2005 15:57:48

schmidt
JavaChild
[Avatar]

Membro desde: 21/04/2005 11:02:51
Mensagens: 149
Localização: Ctba/PR
Offline

Olá,

Não sei se irá ajudar, mas enfim, ai vai um código que fiz a pouco tempo, apenas pra testar o HttpConnection com método post.
Só testei no emulador, no celular, pra falar a verdade não sei como fazer, se vc puder me dizer como fez, lhe serei grato.

the client side,

package midlets;

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class HitMidlet extends MIDlet implements CommandListener {

Display mDisplay;
Form mMainForm;
TextField forename;
TextField surname;
StringItem mMessage;
Command mConnGetCommand;

public HitMidlet() {

//Cria componentes
mDisplay = Display.getDisplay(this);
mConnGetCommand = new Command("Post", Command.SCREEN, 1);
forename = new TextField("Nome:", "", 10, TextField.ANY);
surname = new TextField("Sobrenome:", "", 10, TextField.ANY);
mMessage = new StringItem("Resposta", "");
mMainForm = new Form("Huhu, Bingo =D");

//Adiciona ao form
mMainForm.append(forename);
mMainForm.append(surname);
mMainForm.append(mMessage);
mMainForm.addCommand(mConnGetCommand);

//Adiciona Listener ao form
mDisplay.setCurrent(mMainForm);
mMainForm.setCommandListener(this);
}

public void startApp() {

mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mMainForm);
}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {

if (c == mConnGetCommand) {
Thread t = new Thread() {
public void run() {
connectPost();
}
};
t.start();
}
}

public void connectPost() {

String url = "http://localhost:8084/Server/hitServlet" + "?" + "forename=" + forename.getString() + "&" + "surname="+surname.getString();

try{

// Cria conexão
HttpConnection conn = (HttpConnection) Connector.open(url);

// Seta Propriedades
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");
conn.setRequestProperty("Content-Language", "en-US");
conn.setRequestProperty("Accept", "application/octet-stream");

//Buco tamanho dos parametros para setar tamanho de Conteúdo
String params = "forename=" + forename + "surname=" + surname;
conn.setRequestProperty("Content-Length", Integer.toString(params.length()));

// Abro saída de Dados
DataOutputStream dos = conn.openDataOutputStream();
dos.writeChars(params);
dos.flush();
dos.close();

//Verifico resposta do servidor
int rc = conn.getResponseCode();
if (rc == HttpConnection.HTTP_OK) {
DataInputStream dis = conn.openDataInputStream();

//Escrevo dados
String fullName = dis.readUTF();
mMessage = new StringItem("Success: " + rc, fullName);
dis.close();
}
else{
mMessage = new StringItem("Erro: "+ rc, " Msg: "+ conn.getResponseMessage());
}
}
catch (IOException ioe) {
System.out.println(ioe.toString());
}
mMainForm.append(mMessage);
mDisplay.setCurrent(mMainForm);
}

}


and, the server-side,

/*
* hiServlet.java
*
* Created on 24 de Abril de 2005, 11:05
*/

package servlets;

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

public class hitServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String forename = request.getParameter("forename");
String surname = request.getParameter("surname");

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);

dos.writeUTF(forename + " " + surname);
byte[] data = baos.toByteArray();

response.setStatus(response.SC_OK);
response.setContentLength(data.length);
response.setContentType("application/octet-stream");

OutputStream os = response.getOutputStream();
os.write(data);
os.close();
}

}


Espero não ter lhe confundido ainda mais.
T+

Schmidt
[MSN]
Jay_Santos
Entusiasta Java

Membro desde: 26/04/2005 19:27:18
Mensagens: 21
Offline

Na verdade escrevi bobagem...

Com esse código:



Ele funciona no emulador, mas no celular me retorna código 100 (HTTP_CONTINUE) no getResponseCode...

Não estou conseguindo fazer ele retornar 200 (HTTP_OK) de jeito nenhum no celular... E já cansei de procurar no Google problemas parecidos com o meu e nada... alguém ja passou por isso?

Obrigado!
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

Se voce descobrir o que pode estar acontecendo me avise!

To procurando descobrir tambem.

No emulador da Nokia funciona tudo bem, mas quando passo pro celular (o meu é um Nokia 6100) ele nao funciona. Pede pra conectar, mas nao faz o post dos dados.

[Email]
Jay_Santos
Entusiasta Java

Membro desde: 26/04/2005 19:27:18
Mensagens: 21
Offline

Pode deixar

Continuo quebrando a cabeça, cada lugar fala uma coisa, e os exemplos que tem por ai são bem parecidos

Como disse não achei nenhuma referência a esse erro de receber código 100 no retorno...

No fórum da Sun me disseram duas coisas:

- Usar só minúsculas nos request properties.
- E a seguinte mensagem altamente animadora: "I experienced many problems with POST method. Finally it was random set of properties, that made it work. You must keep trying..."
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

- E a seguinte mensagem altamente animadora: "I experienced many problems with POST method. Finally it was random set of properties, that made it work. You must keep trying..."


hehehehe
Valeu!
[Email]
Jay_Santos
Entusiasta Java

Membro desde: 26/04/2005 19:27:18
Mensagens: 21
Offline

Acho que finalmente consegui!

O que acontece é que, quando você recebe um código de resposta 100, pode ser que o pacote de resposta em si esteja inteiro dentro da parte de dados do pacote, no meu caso, já no celular, olha o que eu recebi dentro da parte de dados do meu pacote (que você pega dando um readBuffer no InputStream):





Bizarro... Espero que ajude! E pensar que perdi alguns dias com isso
tiagops
Java Ninja
[Avatar]

Membro desde: 05/02/2003 10:40:05
Mensagens: 267
Localização: Taubaté - SP
Offline

Jay_Santos,

qual o modelo do seu celular?

Tô comecando a achar que o meu problema esta no meu celular. Nokia 6100
[Email]
 
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Ir para:   
Powered by JForum 2.1.8 © JForum Team