我一直很好奇在我的应用程序中实现Retrofit来做出简单的POST和GET请求。但是我在绕着它缠绕时遇到了问题。今天我决定尝试将它集成到我的应用程序中,但遇到了麻烦。如果你能看一下我的代码会很棒。这是我得到的错误
“引起:retrofit.RetrofitError:retrofit.converter.ConversionException:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但在第1行第2列是BEGIN_OBJECT”
如果您想尝试一下,这是api电话。 http://api.thebookofeveryone.com/social/makelove?phrase=love
我也知道我现在没有对返回的Image Object做任何事情,因为我需要先解决这个问题。
谢谢。
MainActivity
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
extraThread task = new extraThread();
task.execute();
}
public class extraThread extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
RetrofitInterface.getImageApiClient().getImage("love");
return null;
}
}
RetroFit界面
public class RetrofitInterface {
private static ImageApiInterface sImageService;
public static ImageApiInterface getImageApiClient() {
if (sImageService == null) {
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://api.thebookofeveryone.com")
.build();
sImageService = restAdapter.create(ImageApiInterface.class);
}
return sImageService;
}
public interface ImageApiInterface {
@GET("/social/makelove")
Image getImage(@Query("phrase") String phrase);
}
}
图像类
public class Image {
boolean success;
String url;
}
答案 0 :(得分:1)
这是一个JSON解析错误。将Image类更改为:
public class Image {
private Boolean success;
private String url;
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
或者:
public class Image {
Boolean success;
String url;
}
一切都应该正常。
要从JSON或JSON-Schema创建POJO,我建议http://www.jsonschema2pojo.org/。这真的很有帮助。