我的服务器返回简单的Json结果,如下所示,
{"message":"Upload Success.!"}
我正在尝试将结果导入Retrofit Model类
public class MyResponse {
@SerializedName("message")
String message;
}
我的界面类在这里
public interface MyService {
@Multipart
@POST("/")
public retrofit2.Call<MyResponse> saveFile(@Part("filename") String fileName, @Part("photo") RequestBody photo);
}
这是我尝试获取结果的方式
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder().baseUrl("http://xxxxxxx.com/fileupload.php/").addConverterFactory(GsonConverterFactory.create(gson)).build();
MyService service = retrofit.create(MyService.class);
retrofit2.Call<MyResponse> call = service.saveFile(filename, requestbody);
retrofit2.Response<MyResponse> response = call.execute();
但我无法将结果绑定到MyResponse
类
结果
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:25)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:117)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:211)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofit2.OkHttpCall.execute(OkHttpCall.java:174)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:89)
02-23 21:22:43.074 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at retrofitquictest.com.retrofitquicktest.MainActivity$1.run(MainActivity.java:72)
02-23 21:22:43.075 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at java.lang.Thread.run(Thread.java:818)
02-23 21:22:43.075 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
02-23 21:22:43.075 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
02-23 21:22:43.075 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
02-23 21:22:43.075 20293-20410/retrofitquictest.com.retrofitquicktest W/System.err: ... 8 more
我想我在这里犯了一个小错误。有人能识别出来吗?
答案 0 :(得分:1)
根据改进文档,您的基本网址应仅包含您案例中网址的第一部分:
基本网址应为"http://xxxxxxx.com/
并在帖子中添加其他部分,如@POST("fileupload.php/")
。试一试也许它会对你有用。
谢谢!
答案 1 :(得分:-1)
请检查PostMan中的响应,如果在邮递员中你收到的回复与你说的相同,那么这意味着在你的应用程序中你得到错误响应,这是字符串格式,这就是你得到这种类型不匹配异常的原因。