Como enviar e receber JSON do Android para WebService Rest?

Primeiramente peço desculpas pela pergunta um tanto “iniciante”, mas é que não tenho nenhuma noção de como fazer isso.

Tenho um WebService Rest e um DB pronto e já hospedado feito por um amigo (inclusive já possuo as URL’s, e já possui todos os métodos de cadastro, login, etc). O que eu preciso é criar métodos no meu aplicativo Android para enviar um JSON e receber outro JSON (Já possuo os métodos para criar o JSON e para interpretar o JSON recebido). O problema é que não faço ideia de como enviar e receber os JSON’s…

Seguindo alguns tutoriais e videos que achei pela internet, criei uma classe HTTPConnection:

public class HTTPConnection {

    public static String access(String adress) {

        try {
            URL url = new URL(adress);
            URLConnection connection = url.openConnection();
            InputStream is = connection.getInputStream();

            Scanner scanner = new Scanner(is);
            String conteudo = scanner.useDelimiter("//A").next();
            scanner.close();

            return conteudo;

        } catch (Exception e) {
            return null;
        }
    }
}

Uma classe WebClient:

public class WebClient {

    public String post (String json) {
        try { 
            URL url = new URL("http://aqui.a.url" + json);            //aqui já botei a URL que meu amigo cedeu do WS.
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setRequestProperty("Accept", "application/json");
            connection.setRequestProperty("Content-type", "application/json");
            connection.setDoOutput(true);

            PrintStream printStream = new PrintStream(connection.getOutputStream());
            printStream.println(json);
            connection.connect();

            String result = new Scanner(connection.getInputStream()).next();
            return result;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

E por fim, uma classe AsyncTask pra fazer o cadastro do usuário:

 public class CadastrarAsync extends android.os.AsyncTask<Object, Void, Object> {

     private final Context context;
     private ProgressDialog progress;

     public CadastrarAsync(Context context) {
         this.context = context;
     }

     @Override
     protected String doInBackground(Object... params) {

         UsuarioDAO dao = new UsuarioDAO(context);
         Usuario Usuario = dao.getUser(AccessToken.getCurrentAccessToken().getUserId());

         String json = new UsuarioJSON().cadastro(Usuario);
         WebClient client = new WebClient();
         String result = client.post(json);
         return result;
     }
     @Override
     protected void onPreExecute() {
         String waiting = "" + R.string.wait, receiving = "" +R.string.receiving;
         progress = ProgressDialog.show(context, waiting, receiving, true);
     }
 }

Meu problema é:

  1. Não sei como o json é enviado ao e recebido do webservice.
  2. Não sei se minhas classes estão feitas da forma correta.
  3. Se possível, poderiam me mostrar exemplos de como seria enviar e receber um json pra uma determinada URL?

Veja se ele link de ajuda

Posta as tuas Classe e oque tens porque se for pra dizer como envias o JSON e Receber ja foi dito a cima com exemplos de Codigo

Não ajudou muito. Já tinha visto…
Eu já tenho meus JSON’s prontos. O que eu não sei é como faço o método que envia pro WS e que recebe do WS

Olá!
Também existe o http://square.github.io/retrofit/ e o http://square.github.io/okhttp/

Não é bem isso… Eu queria saber se essas classes estão certas e como faço o método pra enviar o JSON pro WS e receber o JSON do WS…

acho que esse artigo vai te ajudar http://blog.alura.com.br/facilitando-as-requisicoes-utilizando-okhttp-no-android/

1 curtida

Essa ajudou bastante, vou testar e ver se resolveu

1 curtida