改造Android基本和简单的问题 [英] Retrofit Android basic and simple issue
问题描述
我的服务器返回如下简单的 Json 结果,
My server returns simple Json result like below,
{"message":"Upload Success.!"}
我正在尝试将结果放入 Retrofit Model 类
I am trying to get the result into Retrofit Model class
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);
}
这就是我尝试获取结果的方式
this is how i try to fetch the result
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
类
But i cannot bind the result to the MyResponse
class
结果吧
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
我想我在这里犯了一个小错误.有人可以识别吗?
I guess I'm doing small mistake here. can someone identify that please ?
推荐答案
根据改造文档,在您的情况下,您的基本 url 应该只包含 url 的第一部分:基本网址应该是 "http://xxxxxxx.com/
并像这样在 Post 中添加另一部分 @POST("fileupload.php/")
.试一试也许它对你有用.
According to retrofit documentation your base url should only consist the first part of url in your case:
Base url should be "http://xxxxxxx.com/
and add the other part in Post like this @POST("fileupload.php/")
. Give it a try maybe it will work for you.
谢谢!
这篇关于改造Android基本和简单的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!