繁体   English   中英

在Android中使用翻新库获取空响应

[英]Getting Null Response using Retrofit Library in android

我在应用中使用Retrofit Library进行网络请求,代码如下:

1. MyAPI.java(接口)

    public interface MyAPI {
    @GET("/{roomID}")
    Call<Messages>loadMessages(@Path("roomID") String roomID);
}

2. Message.java

    public class Message {

    String user;
    String message;
    //String roomID;

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String toString() {
        return(message);
    }
}

3,Messages.java

    public class Messages {
    List<Message> items;
}

4,MainActivity.java

public class MainActivity extends AppCompatActivity {
String roomID = "548b737c0eadfb00eb93891bb28242e5";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://pms.vebific.com:81/chat/index/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    MyAPI myAPI = retrofit.create(MyAPI.class);
    Call<Messages> call = myAPI.loadMessages(roomID);

    call.enqueue(new Callback<Messages>() {
        @Override
        public void onResponse(Response<Messages> response, Retrofit retrofit) {
            Log.e("Response", String.valueOf(response.body()));
        }

        @Override
        public void onFailure(Throwable t) {
            Log.e("Error","---------------");
        }
    });

}

}

使用的网址是:

http://pms.vebific.com:81/chat/index/548b737c0eadfb00eb93891bb28242e5

预期回应:

 [
  {
"_id": {
"$id": "56963d96da036c6c05815e63"
},
"room_id": "548b737c0eadfb00eb93891bb28242e5",
"user": "Jeevan Verma",
"id": 479,
"message": "\\uD83D\\uDC30",
"date": 1481587559734,
"status": "sent"
},
{
"_id": {
"$id": "56963d8cda036c6c05815e62"
},
"room_id": "548b737c0eadfb00eb93891bb28242e5",
"user": "Jeevan Verma",
"id": 479,
"message": "\\uD83D\\uDE0A",
"date": 1481587559734,
"status": "sent"
},
{
"_id": {
"$id": "56964454da036c6c05815e64"
},
"room_id": "548b737c0eadfb00eb93891bb28242e5",
"user": "Jeevan Verma",
"id": 479,
"message": "\\uD83D\\uDC2D",
"date": 1481589296434,
"status": "sent"
}
]

当我在浏览器中使用它时,我得到响应。

使用Retrofit时,我得到的响应为空。我想我可能会丢失一些东西。请帮助我修复它。 请告诉我如何使用翻新读取响应。

更改您的api定义以返回Call<List<Message>>而不是Call<Messages>

Call<List<Message>>loadMessages(@Path("roomID") String roomID);

MyAPI myAPI = retrofit.create(MyAPI.class);
    Call<List<Message>> call = myAPI.loadMessages(roomID);

    call.enqueue(new Callback<List<Message>>() {
        @Override
        public void onResponse(Response<List<Message>> response, Retrofit retrofit) {
            Log.e("Response", String.valueOf(response.body()));
        }

        @Override
        public void onFailure(Throwable t) {
            Log.e("Error","---------------");
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM