2016-05-05 6 views
2

Bitte helfen. Ich rufe Methode auf dem Server von Android und ich habe Erfolg mit Null-Antwort-Körper. Mein Server ist ASP.NET Web API, auf Android-Client verwende ich Retrofit2.Response Body null, wenn Anruf erfolgreich war (Android)

Methode auf dem Server (Route ist "Spieler/IsParticipant /"):

 [AllowAnonymous] 
    [Route("IsParticipant"), HttpGet] 
    public IHttpActionResult IsParticipant(int meetingId, string username) 
    { 
     return Ok(true); 
    } 

Und in android:

@GET("players/isParticipant") 
Call<Boolean> isParticipant(@Query("username") String username, @Query("meetingId") int meetingId); 

Wenn ich rufe es:

Call<Boolean> call = service.isParticipant("aa", 1); 
    call.enqueue(new CustomCallback<Boolean>(this) 
    { 

     @Override 
     public void onSuccess(Boolean model) 
     { 
      DialogUtils.Show(getApplicationContext(), model.toString()); 
     } 
    }); 

I Es wurde ein Fehler angezeigt, weil das Modell null ist. Warum? Wie soll ich es reparieren? Ich wäre für jeden Rat dankbar.

+0

sein das gleiche Ergebnis, wenn ich verwenden (Standard) Rückruf – Koteczeg

+0

Versuchen JsonObject statt Boolean in Anrufen mit und legte eine Pause zeigen Sie auf DialogUtils.Show (getApplicationContext(), model.toString()); –

Antwort

1

Sie auf den folgenden Beispielcode beziehen:

ASP.NET Web API:

[Route("api/values/getbool/{id:int}/{username}")] 
public IHttpActionResult GetBool(int id, string username) 
{ 
    return Ok(true); 
} 

Android:

build.gradle Datei:

dependencies { 
    ... 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
    compile 'com.squareup.retrofit2:converter-scalars:2.0.2' 
    ... 
} 

WebAPIService. Java:

public interface WebAPIService { 
    ... 
    @GET("/api/values/getbool/{id}/{username}") 
    Call<Boolean> getBool(@Path("id") int id, @Path("username") String username); 
    ... 
} 

MainActivity.java:

... 
Retrofit retrofit1 = new Retrofit.Builder() 
     .baseUrl(API_URL_BASE) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 
WebAPIService service1 = retrofit1.create(WebAPIService.class); 

Call<Boolean> booleanCall = service1.getBool(1, "user"); 
booleanCall.enqueue(new Callback<Boolean>() { 
    @Override 
    public void onResponse(Call<Boolean> call, Response<Boolean> response) { 
     Log.i("onResponse", String.valueOf(response.body())); 
    } 

    @Override 
    public void onFailure(Call<Boolean> call, Throwable t) { 
     Log.e("onFailure", t.toString()); 
    } 
}); 
... 

Logcat Ergebnis:

05-05 14:10:30.291 15755-15755/com.example.asyncretrofit I/onResponse: true 
Verwandte Themen