我想从服务器中检索数据......这是我调用的方法
private void getBooks(){
//While the app fetched data we are displaying a progress dialog
//Creating a rest adapter
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(ROOT_URL)
.build();
//Creating an object of our api interface
IApiMethods api = adapter.create(IApiMethods.class);
api.getBooks("78", new Callback<JSONObject>() {
@Override
public void success(JSONObject jsonObject, Response response) {
Toast.makeText(getBaseContext(),jsonObject.toString(),Toast.LENGTH_LONG).show();
Log.e("response",jsonObject.toString());
}
@Override
public void failure(RetrofitError error) {
Log.e("error",error.getMessage());
}
});
}
这是我的界面
public interface IApiMethods {
@FormUrlEncoded
@POST("/product_info.php")
public void getBooks(@Field("cid") String cid, Callback<JSONObject> jsonObjectCallback);
}
我收到错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT但在第1行第1行路径为STRING。
请帮助我......我第一次使用retofit库。
答案 0 :(得分:1)
您的服务器正在返回类似的内容
"your string from the server"
而不是返回JSON对象:
{prop1: val1, prop2: val2, ...}
您需要更改服务器的响应以发回JSON对象,或者您需要将接口定义更改为 String :
public interface IApiMethods {
@FormUrlEncoded
@POST("/product_info.php")
public void getBooks(@Field("cid") String cid, Callback<String> jsonObjectCallback);
}