android - 调用成功时响应体为空(android)

标签 android asp.net-web-api retrofit2

请帮忙。我从 android 调用服务器上的方法,我得到了 null 响应主体的成功。我的服务器是 ASP.NET Web API,在 android 客户端上我使用 retrofit2。

服务器上的方法(路由是“Players/IsParticipant/”):

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

在安卓中:

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

当我调用它时:

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

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

我收到一个错误,因为模型为空。为什么?我该如何解决?如果有任何建议,我将不胜感激。

最佳答案

您可以引用下面的示例代码:

ASP.NET 网络 API:

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

安卓:

build.gradle 文件:

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);
    ...
}

主要 Activity .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 结果:

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

关于android - 调用成功时响应体为空(android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041210/

相关文章:

android 滑动关闭 ListView 不会删除项目

c# - Autofac 注册 AuthorizationFilter 调用两次

android - 如何将我的文件从一个目录复制到另一个目录?

c# - 返回适当的消息给主叫客户端

asp.net-mvc - ASP.NET Web Api 元数据交换?

java - 由 : java. lang.IllegalArgumentException 引起:baseUrl must end in/: url

android - 如何使用 Retrofit 库将 X-API-Key 和 X-Session 添加到 header ?

spring - java.lang.NoSuchMethodError : okio. BufferedSource.rangeEquals(JLokio/ByteString;)Z

android - 仅在 android 中设置顶部边距?

android - 如何在android中查找重复文件