Saltar para conteúdo


Foto
- - - - -

Comunicação Rest

erro 400

  • Por favor inicie sessão para responder
5 respostas a este tópico

#1 Eliz

Eliz

    Novato

  • Membros
  • Pip
  • 3 mensagens

Mensagem publicada 03 June 2015 - 01:44

Olá Pessoal,

 

Tudo bem?

 

Estou começando agora com desenvolvimento Android para fazer meu trabalho de conclusão da faculdade e não estou conseguindo enviar dados para o webservice criado com rest.

 

retorna o código 400 - não sei porque está retornando esse código. Se puderem me ajudar.

 06-03 01:14:04.340: I/System.out(1563): aqui 4  400 -Bad Request

 

Segue minhas classes 

 

public class CadastraLivro {
 
InputStream is = null;
 
URL url;
TodoSugestao todoSugestao; // = new TodoSugestao();
 
public CadastraLivro (){ }
 
public void insere () {
 
InputStream is = null;
URL url;
TodoSugestao todoSugestao = new TodoSugestao ("Teste Eliz06 Neil", "Padrões de Designer" , "1", 2012, "19-05-2015", "[email protected]", 1, "Caxias do Sul", "077260" ); 
 
try {
   url = new URL("http://177.10.97.155:8080/Biblioteca/sugestao");
 
   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 
   conn.setDoInput(true);
   conn.setDoOutput(true);
        //conn.setUseCaches(false);
   conn.setRequestMethod("POST");
   conn.setRequestProperty("Content-Type", "APPLICATION/XML" );
 
   // converte objeto em xml
   XStream xstream = new XStream(new DomDriver());  
   xstream.alias("sugestao", TodoSugestao.class);   
   String xml = xstream.toXML(todoSugestao);
 
  ObjectOutputStream out = new ObjectOutputStream(conn.getOutputStream());
  out.writeObject(xml);
   out.flush();
   out.close();
   
   conn.connect();
   
   System.out.println("aqui 4  " + conn.getResponseCode() + " -" +  conn.getResponseMessage());
 
}
catch ( IOException e  ) {
e.printStackTrace();
}
  }
}
 
 

public class TodoSugestao implements Serializable{ 
private String autorObra;
private String nomeObra;
private String edicao;
private int ano;
private String dataSolicitacao;
private String email;
private int codBiblioteca;
private String biblioteca;
private String cadUsuario;
 
public TodoSugestao() {
 
}
 
public TodoSugestao(String autorObra, String nomeObra, String edicao, int ano, String dataSolicitacao, String email,
int codBiblioteca, String biblioteca, String cadUsuario) {
this.autorObra = autorObra;
this.nomeObra = nomeObra;
this.edicao = edicao;
this.ano = ano;
this.dataSolicitacao = dataSolicitacao;
this.email = email;
this.codBiblioteca = codBiblioteca;
this.biblioteca = biblioteca;
this.cadUsuario = cadUsuario;
}
... gets e sets
}

 
 
public class MainActivity extends Activity {
CadastraLivro cad = new CadastraLivro();
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
 Button enviar = (Button) findViewById(R.id.button1);
 enviar.setOnClickListener(new View.OnClickListener() {
 public void onClick(View v) {
 
if (android.os.Build.VERSION.SDK_INT > 9) { 
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 
}
 
cad.insere();
 
      }
});   
}
}
 
 
Muito Obrigada Galera.
 
Eliz


#2 TvM

TvM

    Guru de Android

  • Former Staff
  • PipPipPipPipPip
  • 1919 mensagens

Mensagem publicada 03 June 2015 - 14:56

Normalmente o codigo 400 é um erro generico do lado do cliente, pedido mal formatado, sintaxe etc.

 

Faz print exactamente do pedido post e tenta replicar no browser, por exemplo com addons (RestEasy,RestClient ), a ver se a resposta é a mesma...


  • TugaPower gosta disto

#3 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 04 June 2015 - 14:58

exprimenta trocar "APPLICATION/XML" por "text/xml"

algo deste genero

 

HttpPost httppost = new HttpPost(SERVICE_EPR); 
StringEntity se = new StringEntity(SOAPRequestXML,HTTP.UTF_8);

se.setContentType("text/xml");
httppost.setHeader("Content-Type","application/soap+xml;charset=UTF-8");
httppost.setEntity(se); 

HttpClient httpclient = new DefaultHttpClient();
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient.execute(httppost);

response.put("HTTPStatus",httpResponse.getStatusLine().toString());

 

 

http://stackoverflow...-http-post-soap


  • Eliz gosta disto

#4 Eliz

Eliz

    Novato

  • Membros
  • Pip
  • 3 mensagens

Mensagem publicada 04 June 2015 - 18:29

Boa tarde...

Não consigo reproduzir no browser a chamada porque tem um arquivo xml que deve ser enviado junto.

Eu acredito que este seja o problema, a geração do arquivo xml que não deve estar correta.

 

De qq forma valeu pela dica.



#5 Eliz

Eliz

    Novato

  • Membros
  • Pip
  • 3 mensagens

Mensagem publicada 04 June 2015 - 19:40

Valeu Xanen, com suas dicas agora consegui enviar os dados.

 

Obrigada mesmo.

 

Abraços



#6 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 05 June 2015 - 09:08

De nada :)

 

Se precisares de outras ajudas passa cá no forum