2017-09-21 4 views
3

J'essaye de POST des données brutes en utilisant Retrofit.Données brutes POST Utilisation de Retrofit

J'ai trouvé beaucoup de solution à POST JSON dans Body en utilisant volley mais les données que j'envoie ne sont pas JSON. mes données sont: {project_purpose: [EXECUTION]}

tout en frappant du postier, je reçois les données mais pas dans Android.

Suggérez-nous comment faire ceci.

Je suis en train d'envoyer sous forme de chaîne mais obtenir 500 dans le code d'erreur

J'ai aussi envoyer les données dans JsonObject, mais ne fonctionne pas ..

Voici mon code pour appeler ..

String bodyST = "{project_purpose: [purpose]}"; 

OR 

JsonObject data = new JsonObject(); 
JSONArray jarray = new JSONArray(); 
jarray.put("EXECUTION"); 
data.addProperty("project_purpose", String.valueOf(jarray)); 


Call<JsonArray> call = apiInterface.getData(mAuthToken, "application/json", bodyST); 

Répondre

0

essayer cette

je faisais face au même problème en essayant de données POST sous forme brute que et pour cela, j'ai gaspillé toute ma journée après que j'ai eu mes solutions.

  1. Votre interface API devrait être comme ceci: -

    @POST(Constants.CONTACTS_URL) 
    Call<Object> getUser(@Body Map<String, String> body); 
    
  2. Dans votre classe où vous appelez ce

    Retrofit retrofit = new Retrofit.Builder() 
         .baseUrl(Constants.BASE_URL) 
         .addConverterFactory(GsonConverterFactory.create()) 
         .build(); 
    ApiInterface apiInterface = retrofit.create(ApiInterface.class); 
    
    try { 
        Map<String, String> requestBody = new HashMap<>(); 
        requestBody.put("email", "[email protected]"); 
        requestBody.put("password", "12345678"); 
        Call<Object> call=apiInterface.getUser(requestBody); 
        call.enqueue(new Callback<Object>() { 
         @Override 
         public void onResponse(Call<Object> call, Response<Object> response) { 
          try { 
           JSONObject object=new JSONObject(new Gson().toJson(response.body())); 
           Log.e("TAG", "onResponse: "+object); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 
         @Override 
         public void onFailure(Call<Object> call, Throwable t) { 
         } 
        }); 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
    

Sortie

logcat: enter image description here

Postman enter image description here

Remarque: -J'ai n'utilise pas de classe modèle pour obtenir des données après la récupération de données, vous pouvez utiliser de toute façon pour stocker des données.