我正在使用Retrofit v2库进行网络调用。我在build.gradle文件中使用以下依赖项。
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
1.User.java
public class User {
@SerializedName("email")
String email;
@SerializedName("password")
String password;
public User(String email, String password) {
this.email = email;
this.password = password;
}
}
2.MyAPI.java
public interface MyAPI {
@GET("{roomID}")
Call<List<Message>>loadMessages(@Path("roomID") String roomID);
@POST("almabay_oauth/authorize")
Call<User>login(@Body User user);
}
3.MainActivity.java
public class MainActivity extends AppCompatActivity {
String roomID = "548b737c0eadfb00eb93891bb28242e5";
MyAdapter adapter;
ListView lv;
List<Message> items;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://pms.vebific.com:81/chat/index/")
.addConverterFactory(GsonConverterFactory.create())
.build();
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("ResponseP", String.valueOf(response.body()));
List<Message> items = response.body();
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
Message message = (Message) iterator.next();
String user = message.getUser();
//Log.e("User", user);
}
int statusCode = response.code();
//Log.e("StatusCode", String.valueOf(statusCode));
adapter = new MyAdapter(getApplicationContext(), items);
lv.setAdapter(adapter);
}
@Override
public void onFailure(Throwable t) {
}
});
//--------------POST-------------
Retrofit retrofit1 = new Retrofit.Builder()
.baseUrl("http://phpstack-11819-25991-62288.cloudwaysapps.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
MyAPI myPostApi = retrofit1.create(MyAPI.class);
User user = new User("j@yahoo.com", "Admin123#");
Call<User> call1 = myPostApi.login(user);
call1.enqueue(new Callback<User>() {
@Override
public void onResponse(Response<User> response, Retrofit retrofit) {
Log.e("Response code ", String.valueOf(response.code()));
User user1 = response.body();
Log.e("Response Message",response.message());
}
@Override
public void onFailure(Throwable t) {
}
});
}
}
我已成功使用此库处理GET请求方法,但我无法理解在使用此库将数据发布到服务器后如何读取响应。我正在使用Retrofit库向服务器发送电子邮件ID和密码。我是在这里获取状态代码为200.这意味着一切正常。我知道在成功向服务器发送数据后,我得到一些响应字符串。但在这里我无法查看响应。请帮助。
答案 0 :(得分:1)
正如您所说,您的响应代码为200,这表示您的请求和响应没有问题。
使用OkHttpLoggingIntercepter类。
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient httpClient = new OkHttpClient();
httpClient.interceptors().add(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient)
.build();
您将获得详细的回复日志以及所有错误(如果有)。
还有一件事 Gson Converter只解析在root上有json对象的json数据。不是JsonArray。
因此,通过编写上面的代码来检查日志中的响应字符串。
答案 1 :(得分:0)
尝试通过POST
插件向Chrome发送此Postman
请求,也许您的用户类错误