[RESOLVIDO]POST JSON para um WebServer

7 respostas
java
L

Boa Tarde a todos, gente já fazem uns 3 dias que estou tentando resolver isso e não consigo, estou tentando criar um app e um WebServer ambos comunicando-se com o uso do JSON, a parte do WebServer acredido que esta correta.

JsonApp.Class

@Path("app")
public class JsonApp {
	public JsonApp() {}
	
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public JsonClasse Resul() {

	JsonClasse cj = new JsonClasse();
	cj.setId(12);
	cj.setTitulo("Mano");
	cj.setValor(20);

	return cj;

}
	
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String Pega(JsonClasse aaux) {

	System.out.println("Entrada no método");
	System.out.println(aaux.getTitulo());
	System.out.println(aaux.getValor());
	System.out.println(aaux.getId());

	 return "{\"confi\":\"foi\"}";
}
	
}

JsonClasse.Class

@XmlRootElement
public class JsonClasse {
	
	private int id;
	private List<Byte> imagem = new ArrayList<Byte>();
	private String titulo;
	private double valor;
	
	public JsonClasse() {}

  //Getters e Setters

estou usando o jersey.containers, jersey.core, jersey-media-moxy 2.22.2, o JAXB 2.2.12 e o jsf 2.2.13, como eu disse acredito que está correto o lado do server, o meu problema é do lado do app, usando o HttpURLConnection para criar a conexão e o JSONObject, JSONArray para interpreta-la eu conseguir fazer um GET e exibir o resultado num TextView, o meu problema é na hora de fazer um POST a ideia é enviar esse json{"id":12,"imagem":[],"titulo":"Mano","valor":20.0} e da um “print” no console do WebServer, só que nada acontece, eu não vejo o print no console do server e nem recebo nenhuma mensagem de erro no console do android studio, encontrei varios códigos ensinando a fazer um POST mas nenhum deles funcionou, no momento o que eu tenho é isso mas ele não funciona.

URL url = null;
                    try {
                        url = new URL("http://192.168.0.105:8080/WebServiceAppMaven/json/app/post");
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    }

                    HttpURLConnection conn = null;
                    try {
                        conn = (HttpURLConnection) url.openConnection();
                        conn.setDoOutput(true);
                        conn.setRequestMethod("POST");

                        OutputStream os = conn.getOutputStream();
                        String jjson = "{\"id\":12,\"imagem\":[],\"titulo\":\"Mano\",\"valor\":20.0}";
                        os.write(jjson.getBytes("UTF-8"));
                        os.flush();
                        os.close();

                        conn.disconnect();

                    }catch (IOException e){
                        e.printStackTrace();
                    }

                    conn.disconnect();

poderia me ajudar, Obrigado.

(Atualização): foi mal dei uma arrumadinha no código, consertei uma pequena bagunça que eu fiz na hora de postar, mexer com isso quando vc esta cansado nunca é uma boa ideia, mas o meu problema continua o mesmo.

7 Respostas

Felipe_Miranda

Já tentou usar o POSTMAN passando um JSON que você acha que seu webservice deve entender para vê se funciona?

L

cara valeu mesmo pela dica do POSTMAN eu não conhecia esse programa, agora tenho certeza que o POST do meu WebServer está funcionando e que o problema é mesmo no código do meu app.

Felipe_Miranda

Boa tarde Leandro,

que bom que ajudou, já entendendo-se qual lado da ponte está o problema vai ajudar bastante a identificar o erro no código, existe uma outra ferramenta támbem, SOAPUI, um pouco mais robusta ao meu ver doque o POSTMAN mas os dois são muito bons.

abs!

L

pocha ninguém conhece um código para o meu app poder mandar um POST pro WebService? agora sei que o meu WebService funciona, mas ainda estou com problema no código do app.

Felipe_Miranda

Quer enviar o POST pelo android?

L

é isso ai, eu conseguir fazer um GET recebo um JSON no android e exibo ele num Textview, o meu proble é conseguir enviar um POST pelo android.

L

demorou mas finalmente conseguir fazer o POST funcionar, sabia que o problema era simples de se resolver, mas até eu descobrir…

o código final ficou assim:

URL url = null;
            try {
                url = new URL("http://192.168.0.105:8080/WebServiceAppMaven/json/app/post");
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }

            HttpURLConnection conn = null;
            StringBuilder json = new StringBuilder();
            try {
                String jjson = "{\"id\":12,\"imagem\":[],\"titulo\":\"Mano\",\"valor\":1000.0}";
                conn = (HttpURLConnection) url.openConnection();
                conn.setUseCaches(false);
                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);
                conn.setDoInput(true);
                conn.setDoOutput(true);
                conn.setRequestMethod("POST");
                conn.setRequestProperty("Content-Type", "application/json");
                conn.setFixedLengthStreamingMode(jjson.length());
                conn.connect();

                OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream());
                os.write(jjson);
                os.flush();
                os.close();

                InputStream it = new BufferedInputStream(conn.getInputStream());
                BufferedReader br = new BufferedReader(new InputStreamReader(it));
                String linha;
                while((linha = br.readLine()) != null){
                    json.append(linha);
                }

                final String jaba = json.toString();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tela.setText(jaba);
                    }
                });

                conn.disconnect();
            }catch (IOException e){
                conn.disconnect();
                e.printStackTrace();
            }
Criado 10 de abril de 2016
Ultima resposta 18 de abr. de 2016
Respostas 7
Participantes 2