每当我尝试通过Retrofit发送POST请求时,我有500个内部服务器错误.当我发送GET请求时,它正确发送.我确信在服务器端,每一件事都可以.我的代码出了什么问题?
String ENDPOINT = "http://52.88.40.210"; //model for request FrIEndModel ff = new FrIEndModel(); ff.setFrIEndNumber("380935275259"); ff.setID(516); ff.setNumber("380936831127"); RestAdapter adapter = new RestAdapter.Builder() .setEndpoint(ENDPOINT) .build(); WayfAPI API = adapter.create(WayfAPI.class); API.getFrIEndsLocation(ff, new Callback<List<FrIEndLocationModel>>() { @OverrIDe public voID success(List<FrIEndLocationModel> frIEndLocationModels, Response response) { for (FrIEndLocationModel ff : frIEndLocationModels) { Log.d("myLogs", "===========Successful=========="); Log.d("myLogs", "ID: " + ff.getID()); Log.d("myLogs", "Number: " + ff.getNumber()); Log.d("myLogs", "Geolocation: : " + ff.getGeolocation()); } } @OverrIDe public voID failure(RetrofitError error) { Log.d("myLogs", "-------ERROR-------"); Log.d("myLogs", Log.getStackTraceString(error)); } }); }
请求声明:
@headers({ "Accept: application/Json", "Content-type: application/Json"})@POST("/API/geo/getLoc")public voID getFrIEndsLocation(@Body FrIEndModel frIEndModel, Callback<List<FrIEndLocationModel>> response);
邮递员的请求和回复的例子:
解决方法:
似乎在postman中你发送了一个FrIEndModel数组,但在你的代码中你发送的是一个对象.
只需更改您要发送的对象,而不是发送单个对象,发送服务器所需的List
List<FrIEndModel> frIEndsList = new ArrayList<FrIEndModel>(); FrIEndModel ff = new FrIEndModel(); ff.setFrIEndNumber("380935275259"); ff.setID(516); ff.setNumber("380936831127"); frIEndsList.add(ff);
您还应该更改此签名:
public voID getFrIEndsLocation(@Body FrIEndModel frIEndModel, Callback<List<FrIEndLocationModel>> response);
至
public voID getFrIEndsLocation(@Body List<FrIEndModel> frIEndModel, Callback<List<FrIEndLocationModel>> response);
总结 以上是内存溢出为你收集整理的java – Retrofit:500内部服务器错误全部内容,希望文章能够帮你解决java – Retrofit:500内部服务器错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)