2016-08-08 32 views
-2

Ich versuche, Web-Service aufzurufen, der responsive Array empfängt. Ich schicke Hash-Karte mit Werten Retrofit in Android, aber es mir 500 internen Server error.Following wird geben, ist mein Code: @POST("/save") public void CreateAccount( @Body Map<String, String> data, Callback<Response> callback);So senden Sie responsive Array von Android mit Hilfe von Retrofit

+0

was ist ein reaktions Array? – Yazan

+0

responsive Array in PHP, die aus Schlüssel-Wert-Paare bestehen – vinit

+0

Sie meinen ** Assoziative Arrays **? Wenn dies der Fall ist, suchen Sie nach einer Schlüssel/Wert-Struktur. Wenn die Map nicht funktioniert, versuchen Sie, die Schlüssel in einem JsonObject zu füllen und senden Sie 'jsonObj.toString()' an den Server, ansonsten müssen Sie ein Beispiel anfordern Die Daten sollten so aussehen, wenn sie an den Server – Yazan

Antwort

0

Das ist, wie Sie dies mit Retrofit tun können 2

Schnittstelle:

@POST("/save") 
    Call<JsonElement> CreateAccount(@Body RequestBody requestBody); 

Request-Code:

//create JsonObject with key-pair values 
JsonObject root = new JsonObject(); 
root.addProperty("key1", "value1"); 
root.addProperty("key2", "value2"); 
//get is as string 
String resultJson = root.toString(); 
//parse it to RequestBody type 
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), resultJson); 
//create adapter 
Retrofit restAdapter = new Retrofit.Builder() 
     .baseUrl(Constants.ROOT_API_URL) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 
IConstructSecureAPI service = restAdapter.create(IConstructSecureAPI.class); 

Call<JsonElement> result = service.CreateAccount(requestBody); 
result.enqueue(new Callback<JsonElement>() { 
    @Override 
    public void onResponse(Call<JsonElement> call, retrofit2.Response<JsonElement> response) { 
     if(response.isSuccessful()){ 
      JsonElement jsonElement = response.body(); 
      JsonObject withResponse = jsonElement.getAsJsonObject(); 
     } 
     else{ 
      System.out.println(response.message()); 
     } 
    } 

    @Override 
    public void onFailure(Call<JsonElement> call, Throwable t) { 

    } 
});