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

通过Retrofit获取API时出错,但相同的API与postman一起工作

莫逸仙
2023-03-14

这是我们面临的错误com.google.gson.JsonSynTaxException:java.lang.IllegalStateException:期望一个字符串,但BEGIN_OBJECT在第1行第1119列路径$. data[4]。last_received_message

public void DeviceList(String api, final ApiType apiTypes, String page_no, String authtoken) {
        ProgressDialog progressDialog = new ProgressDialog();
        try {
            this.pdLoading = progressDialog.getInstance(this.context);
            this.pdLoading.setProgressStyle(android.R.style.Widget_ProgressBar_Small);
            if (this.pdLoading.isShowing()) {
                this.pdLoading.cancel();
            }
            this.pdLoading.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.apiTypeVariable = apiTypes;
        /*RestAdapter adapter = new RestAdapter.Builder()
                .setEndpoint(api) //Setting the Root URL
                .build();*/
        Retrofit retrofit = new Retrofit.Builder().baseUrl(api).addConverterFactory(GsonConverterFactory.create()).client(okHttpClient).build();
        GitApi gi = retrofit.create(GitApi.class);
        call = (Call<T>) gi.getDevices(authtoken, page_no);
        call.enqueue(new Callback<T>() {

            @Override
            public void onResponse(Call<T> call, Response<T> response) {
                t = (T) response.body();
                if (pdLoading.isShowing())
                    pdLoading.cancel();
                onResponseListner.onResponse(t, apiTypeVariable, true);
            }

            @Override
            public void onFailure(Call<T> call, Throwable t) {
                Log.e(apiTypes.toString(), t.getMessage() + ".");
                if (pdLoading.isShowing())
                    pdLoading.cancel();
                onResponseListner.onResponse(null, apiTypeVariable, false);
            }

        });

}```

共有1个答案

单耘豪
2023-03-14

它表明在将json字符串转换为模型时出现了问题。具体来说,模型的一个属性声明为字符串类型,但json字符串中有一个字段(键)映射到对象类型。请检查您的模型是否兼容以及您从api收到的结果

 类似资料:
  • 我的适配器 我的持有者 类myHolder(itemView:View):recyclerview.viewholder(itemView){} 第二个 提前致谢

  • 我有一个与REST url设计相关的问题。我在这里找到了一些相关的帖子:相同资源的不同RESTful表示,在这里:通过不同字段获取资源的RESTful url,但对于最佳实践是什么以及为什么,这些回复并不十分清楚。这里有一个例子。 我有表示“用户”资源的REST URL。我可以获得一个具有id或电子邮件地址的用户,但两者的URL表示形式保持不变。通过大量的博客和书籍,我看到人们一直在用很多不同的方

  • 我很难弄清楚如何使用Postman进行测试的Marketo REST API。 到目前为止,我可以进行身份验证并获取access_token, 但当我尝试创建文件夹时…(正确验证) endpoint: 身体: 我得到: 我不知道我做错了什么。

  • 我有一个非常基本的,如下所示: 但是,当我将它发送给REST API时,它会收到作为正文。我在Postman中测试了准确的JSON,选择作为,并将添加到endpoint,它就工作了。使用Postman,我能够连接到REST API(在那里我看到JSON对象被接收),然后我得到了所需的响应。 任何想法尝试都将不胜感激!

  • 我已经使用登录API在Jmeter中进行了测试。 为此,我通过了以下请求: 帖子网址:......POST数据参数:"电子邮件地址":"a@gmail.com","密码":"ad332017" 对于上述要求,我得到两种不同的答复。 邮递员:我收到回复,状态代码200 OK(这也是预期的) 在Jmeter上,我得到响应:响应代码:307响应消息:临时重定向。 谁能帮我解决这个问题?

  • 我有一个烧瓶服务器运行在http://127.0.0.1:5000和一个vuejs前端运行http://localhost:8080我已经做了api,并用postman测试了它,一切都如预期的那样工作:( > 将请求发布到/登录- (将请求发送至/登录)- 烧瓶API代码: 登录。vue: 指数vue 当我使用邮递员登录时,我得到的响应为;当我使用邮递员获取url/索引时,我得到响应。数据但当我使