android – POST body JSON使用Retrofit

android – POST body JSON使用Retrofit,第1张

概述我试图使用Retrofit库来发布 JSONObject,但是当我在接收端看到请求时,内容长度为0. 在RestService界面中: @Headers({ "Content-type: application/json"})@POST("/api/v1/user/controller")void registerController( @Body JSONObj 我试图使用Retrofit库来发布 JSONObject,但是当我在接收端看到请求时,内容长度为0.

在RestService界面中:

@headers({        "Content-type: application/Json"})@POST("/API/v1/user/controller")voID registerController(      @Body JsONObject registrationBundle,@header("x-company-device-token") String companyDevicetoken,@header("x-company-device-guID") String companyDeviceGuID,Callback<JsONObject> cb);

它被称为,

mRestService.registerController(    registrationBundle,mApplication.mSession.getCredentials().getDevicetoken(),mApplication.mSession.getCredentials().getDeviceGuID(),new Callback<JsONObject>() {        // ...    })

而且我确定的是,一个JsONObject的registrationBundle不为null或为空(其他字段当然不错).在请求的时刻,它注销为:{“zip”:19312,“useAccountZip”:false,“controllername”:“mine”,“registrationCode”:“GLD94Q”}.

在请求的接收端,我看到请求具有Content-type:application / Json,但是Content-length:0.

是否有任何原因为什么发送JsON在这样的身体不工作?我在使用Retrofit时缺少一些简单的东西吗?

解决方法 默认情况下,如果您需要JsON请求正文,则不需要设置任何标题.每当您测试Retrofit代码时,建议在RestAdapter实例上设置.setLogLevel(RestAdapter.LogLevel.FulL).这将显示您的完整请求标头和正文以及完整的响应标头和正文.

发生的是您正在设置内容类型两次.然后你传递一个JsONObject,它正在通过GsonConverter传递,并且被看作是{“nameValuePairs”:YOUrjsonSTRING},其中YOUrjsonSTRING包含完整的,预期的JsON输出.由于显而易见的原因,这对于大多数REST API将无法正常工作.

默认情况下,您应该跳过已经使用UTF-8设置为JsON的Content-type标头.另外,不要将JsONObject传递给GSON.传递一个Java对象供GSON转换.

如果您使用回调,请尝试:

@POST("/API/v1/user/controller")voID registerController(    @Body MyBundleObject registrationBundle,Callback<ResponSEObject> cb);

我还没有测试这个确切的语法.

同步示例:

@POST("/API/v1/user/controller")ResponSEObject registerController(    @Body MyBundleObject registrationBundle,@header("x-company-device-guID") String companyDeviceGuID);
总结

以上是内存溢出为你收集整理的android – POST body JSON使用Retrofit全部内容,希望文章能够帮你解决android – POST body JSON使用Retrofit所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1131404.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存