Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

158
Visualizações
Send JSON as POST

I'm trying to send JSON using the code below in Android. I don't have access to server side code just database where data supposed to be stored. The guy who handles the server side says he sees my request as GET. I really don't understand why. I tried several examples I found on the internet and none of them worked.

public void uploadNewTask(View view) {
    AsyncT asynct = new AsyncT();
    asynct.execute();
}

class AsyncT extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
            URL url = new URL("http://[...]/events/");
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            httpURLConnection.setRequestProperty("Accept", "application/json; charset=UTF-8");
            httpURLConnection.connect();

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("title", "tytul1");
            jsonObject.put("description", "opis1");
            jsonObject.put("execution_time", "2017-05-01 12:30:00");

            /*
            OutputStreamWriter writer = new OutputStreamWriter(httpURLConnection.getOutputStream());
            String output = jsonObject.toString();
            writer.write(output);
            writer.flush();
            writer.close();*/

            DataOutputStream wr = new DataOutputStream(httpURLConnection.getOutputStream());
            wr.writeBytes(jsonObject.toString());
            wr.flush();
            wr.close();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
}
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Here's my suggestion to you: Use libraries to make your work easy. Libraries that do most of the work for you and makes request faster and better error handling.


So how do you make a POST call?

Step 1: Add these two libraries to your gradle dependencies:

compile 'com.google.code.gson:gson:2.8.0'    // to work with Json
compile 'com.squareup.okhttp:okhttp:2.7.5'   // to make http requests

Step 2: Create POST body JSON object and make a POST call.

Declare this in your Activity/Fragment:

final MediaType jsonMediaType = MediaType.parse("application/json");

Then, in your AsyncTask, do this:

try {
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("title", "tytul1");
    jsonObject.addProperty("description", "opis1");
    jsonObject.addProperty("execution_time", "2017-05-01 12:30:00");

    RequestBody requestBody = RequestBody.create(jsonMediaType, new Gson().toJson(jsonObject));

    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()
            .url("http://[...]/events/")
            .post(requestBody)
            .addHeader("content-type", "application/json")
            .build();

    Response response = client.newCall(request).execute();

    // this is the response of the post request
    String res = response.body().string();

    // you can get the response as json like this
    JsonObject responseJson = new Gson().fromJson(res, JsonObject.class);

} catch (Exception e) {
    Log.e(TAG, e.toString());
}

Note: If you want more example about this network library, see their official examples here

over 4 years ago · Santiago Trujillo Relatório

0

if you want to send get request, why there are not string like this format.http://xxx?requestParam=value&requestparam2=value2 format. I remember i used such way send get request to server side in my project do have string concatenation.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda