改编错误com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_OBJECT但是在第1行第1行STRING

时间:2016-04-27 10:54:39

标签: java android json retrofit

我想从服务器中检索数据......这是我调用的方法

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库。

1 个答案:

答案 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);

}