当前位置: 首页 > 知识库问答 >
问题:

收到一具空尸体在改造响应中

谢裕
2023-03-14

我正在使用改型从http URL获取数据。我的界面类:

public interface SlotsAPI {

    /*Retrofit get annotation with our URL
      And our method that will return a Json Object
    */
    @GET(url)
    retrofit.Call<JSONObject> getSlots();
}

我的请求方法。

public void getResponse(){

    Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

    //Creating an object of our api interface
    SlotsAPI api = retrofit.create(SlotsAPI.class);
    retrofit.Call<JSONObject> callback = api.getSlots();
    callback.enqueue(new Callback<JSONObject>() {
    @Override
    public void onResponse(Response<JSONObject> response) {
        if (response != null) {
            Log.d("OnResponse", response.body().toString());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
    });
}

作为回应,我得到了一个空的身体。服务器的响应是200 OK。

D/OnResponse: {}

但是当我在浏览器中打开网址时,我在屏幕上看到了JSONObject。

共有3个答案

诸新霁
2023-03-14

我想你还不了解改造后的filosofy。正确的界面应该是:

public interface SlotsAPI {

    /*Retrofit get annotation with our URL
      And our method that will return a Json Object
    */
    @GET(url)
    JSONObject getSlots();
}

当您调用getSlots方法时,Reformation将自动执行HTTP请求并返回JSONObject。你需要在主线程外完成这项工作。

金子轩
2023-03-14

请检查您的JsonObject。如果您想在json中获得响应,您必须定义一个响应类型JsonObject而不是JSONObject,否则请在您的接口中指定pojo类。

薛弘济
2023-03-14

你应该试试这样......

public interface SlotsAPI {

/*Retrofit get annotation with our URL
  And our method that will return a Json Object
*/
@GET(url)
Call<JsonElement> getSlots();
}

in-request方法

 retrofit.Call<JsonElement> callback = api.getSlots();
callback.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(Response<JsonElement> response) {
    if (response != null) {
        Log.d("OnResponse", response.body().toString());
    }
}
 类似资料:
  • 我正在尝试调用FlickR API,但由于response.body()返回null而遇到困难。 我不确定它是否与我的JSON/POJO映射相关,但我无法弄清楚当我调用Flickr时如何访问来自改版的响应。我知道我的调用已经成功完成,因为我实际上能够通过日志拦截器查看JSON。 型号: 活动 }

  • 但是我总是在方法中获得响应。因此,我尝试使用查看响应的错误主体。错误正文包含与原始响应完全相同的内容。 我用控制了response,看看我是否修改了我的响应类wright,它似乎可以。 为什么改型无法转换我的响应? 更新

  • 问题内容: 什么是空指针异常(),什么原因导致它们? 可以使用哪些方法/工具确定原因,以阻止异常导致程序过早终止? 问题答案: 声明引用变量(即对象)时,实际上是在创建指向对象的指针。考虑以下代码,您在其中声明基本类型的变量: 在此示例中,变量是an ,Java会为您初始化它。在第二行为其分配值时,您的值将写入所指的存储位置。 但是,当您尝试声明引用 类型时 ,会发生一些不同的事情。采取以下代码:

  • 相关问题 < code>Json的响应是< code >新行分隔符Json: 我正在使用来提出请求: 我可以在我的中看到响应,但收到以下错误: 中格式错误的JSON < li >响应在< code>NdJson中,它无法正确解析它 如何正确解析它?

  • 使用Apache camel 2.15.3创建了SOAP服务,一切正常,即使响应SOAP正文也是有效的。 骆驼2.15.3依赖于cxf 3.0.6 但是当我将cxf-core更新到3.1.3时,一切都很好,除了SOAP响应体是空的。 没有错误日志,服务器启动正常。 我是否缺少一些依赖项? POM。xml