- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是retrofit
的新手(我之前使用volley
),在此之前我在retrofit方面做得很好,直到出现此错误:-
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected int but was Boolean at line 8 column 37 path $.response.data.book_service_id
我尝试了本网站提供的所有解决方案,但无法帮助自己,因为我是retrofit
的新手。我认为这是因为 JSON 解析
错误。我不知道该如何处理。这可能是一个重复的问题,但请帮忙。下面是我的代码:
请求和获取数据:
private void makeBookingRequest(String position) {
final CustomProgressDialog dialog = new CustomProgressDialog();
dialog.show(getSupportFragmentManager(),"tag");
SharedPreferences preferences = getSharedPreferences("MYSharedPref",MODE_PRIVATE);
String sessionkey = preferences.getString("sessionkey",null);
System.out.println(sessionkey);
String serviceId = position;
System.out.println(position);
APIEndPoints endPoints = Url.getInstance().create(APIEndPoints.class);
Call<Book> call = endPoints.makeBookingRequest(serviceId,sessionkey);
call.enqueue(new Callback<Book>() {
@Override
public void onResponse(Call<Book> call, retrofit2.Response<Book> response) {
dialog.dismiss();
if (!response.isSuccessful()) {
Toast.makeText(HomeActivity.this, "server is not responding", Toast.LENGTH_SHORT).show();
}
else if(response.body() != null){
Book bookData = response.body();
String message = bookData.response.message;
Toast.makeText(HomeActivity.this, message, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Book> call, Throwable t) {
dialog.dismiss();
Toast.makeText(HomeActivity.this, "Error" + t.getLocalizedMessage(),
Toast.LENGTH_SHORT).show();
System.out.println(t);
}
});
}
模型类:
package com.medpal.medpal_client.Models;
import com.google.gson.annotations.SerializedName;
public class Book {
@SerializedName("response")
public ResponseEntity response;
public class ResponseEntity{
@SerializedName("data")
public DataEntity data;
@SerializedName("secondary_message")
public String secondary_message;
@SerializedName("message")
public String message;
@SerializedName("code")
public int code;
}
public class DataEntity {
@SerializedName("book_service_id")
public int book_service_id;
}
}
API端点
@FormUrlEncoded
@Headers({"apikey: testapikey", "Content-Type:application/x-www-form-urlencoded" })
@POST("service/accept?")
Call<Book> makeBookingRequest(
@Field("service_id") String ServiceId,
@Field("session_key") String sessionKey);
URL 类别
public class Url {
public static final String base_url = "http://www.medpal.net/api/v1/";
public static final String serviceUrl = "http://www.medpal.net/api/v1/services?";
public static Retrofit retrofit;
public static Retrofit getInstance() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(base_url)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
最后来自服务器的响应:
{
"response": {
"error": [],
"code": 200,
"message": "Service booked",
"secondary_message": "Service booked successfully",
"data": {
"book_service_id": 35
}
}
}
最佳答案
要准确检测问题,您需要使用拦截器来记录服务器响应,要记录服务器响应,您可以使用 OkHttp3 这是一个示例。
private OkHttpClient provideOkhttpClient() {
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.readTimeout(15000, TimeUnit.MILLISECONDS);
client.writeTimeout(70000, TimeUnit.MILLISECONDS);
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.addInterceptor(interceptor);
return client.build();
}
并将其添加到您的 Retrofit.Builder
.client(provideOkhttpClient())
这些是针对 Gradle 的
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0'
如果您这样做,您将在 Logcat 上看到您从服务器发送和获取的所有内容。
关于java - 为什么我收到 JsonSyntaxException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59896907/
我正在开发一个通过 HTTPS POST 请求将数据导入 Web 服务的项目。为了创建 HTTPS 请求,我使用了 Retrofit2。这是我关于如何创建请求和评估响应的方法: 我正在创建一个对象来存
我遇到了 JSON 解析错误。我的代码如下: try { //Read the server response and attempt to parse it as JSON
我正在使用托管在 SmarterAsp.net 上的 ASP Web API 网络服务以 Json 格式获取数据以在我的 android 应用程序中使用它们,当我使用 Wifi 时一切正常并且 Jso
大家好,我正在制作一个 Android 应用程序,其中我收到 4 条错误消息: GSON 无法解析为类型 JsonSyntaxException 无法解析为类型 和另外2个 刚刚添加了gson-2.2
我最近决定使用 Android 的 Retrofit Library 来进行网络调用,并使用 GSON 来处理 JSON。但我不断收到以下异常,并且我的应用程序崩溃了。 Caused by: retr
我是retrofit的新手(我之前使用volley),在此之前我在retrofit方面做得很好,直到出现此错误:- com.google.gson.JsonSyntaxException: java.
我正在运行一些 Java 分析工具来进行 WES 分析。所以,我可以被认为是 Java 的新手 :( 顺便说一句,我使用 PharmCAT 来分析我的 VCF 文件。但我得到了这个错误: com.go
我有一个名为 DateTime 的自定义对象。我使用方法 registerTypeAdapter 注册 TypeAdapter 。我认为 GSON 忽略了这个适配器。 GSON如何检测json对象中的
我正在尝试使用 Gson 反序列化一个 json 数组,但目前我收到了一个 JsonSyntaxException。 json 字符串是由 .NET MVC3 Web 服务使用 JsonResult
正在测试一个抛出 JsonSyntaxException 的类,即使我期望抛出预期的错误,测试仍然失败。我的测试: @规则 公共(public) ExpectedException 异常 = Expe
我正在读取一个 Json 字符串并使用 scala 代码将其转换为一个对象: val myInstance = (new Gson()).fromJson(t, classOf[myClass]) 一
相关Question Json的响应是换行符Json: {"type":"data","id":"xyz"} {"type":"value","id":"xcf"} .... .... 我正在使用Re
我正在尝试复制 Google App Engine Servlet 模块 here使用 Retrofit 而不是 AsyncTask。 我觉得很奇怪,但显然 Retrofit 2.0 不支持连接到 G
我遇到了这个问题,我不想解决那个问题,但想办法告诉 GSON“跳过错误并继续”解析: Can't parses json : java.lang.IllegalStateException:
首先,我知道其他一些用户之前已经问过类似的问题,所以您可能认为这是一个重复的问题,但事实并非如此。 我想创建一个模型类来解析 GoogleMaps-Direction API 响应从 JSON 格式到
我是 gson 新手并收到此错误。 com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为 BEGIN_OBJE
我正在获取一个 JSON 字符串,并希望将其转换为类型化对象。 但是我收到以下反序列化错误: 04-02 16:20:45.632: E/AndroidRuntime(30912): com.goog
我有一个 JSON 文件: { "settings": { "header": { "id": "240A64CDC43F", "filename": "net
我正在尝试使用其 Java 驱动程序测试 ArangoDB。我正在 CentOS 6.6 上测试它。我收到以下错误: 15:48:01.151 [main] DEBUG com.arangodb.ht
这个问题已经有答案了: Gson to json conversion with two DateFormat (3 个回答) 已关闭 6 年前。 我遇到以下异常 - com.google.gson.
我是一名优秀的程序员,十分优秀!