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 é:
- Não sei como o json é enviado ao e recebido do webservice.
- Não sei se minhas classes estão feitas da forma correta.
- Se possível, poderiam me mostrar exemplos de como seria enviar e receber um json pra uma determinada URL?