当前位置: 首页 > 知识库问答 >
问题:

使用改型的POST body JSON

金烨华
2023-03-14
@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>() {
        // ...
    }
)

共有1个答案

程胤运
2023-03-14

默认情况下,如果您想要一个JSON请求体,则不需要设置任何头。无论何时测试改型代码,我都建议在RestAdapter的实例上设置.setLogLevel(restAdapter.logLevel.full)。这将向您显示完整的请求标头和正文以及完整的响应标头和正文。

发生的情况是,您设置了Content-type两次。然后,您将传递一个JSONObject,该JSONObject将通过GsonConverter传递,并被修改成类似于{“namevaluepairs”:yourJSONString}的样子,其中yourJSONString包含完整的、预期的JSON输出。由于明显的原因,这对大多数REST API都不能很好地工作。

您应该跳过对Content-type头的混乱,默认情况下,它已经被设置为使用UTF-8的JSON。另外,不要将JSONObject传递给GSON。传递一个Java对象供GSON转换。

@POST("/api/v1/user/controller")
void registerController(
    @Body MyBundleObject registrationBundle,
    @Header("x-company-device-token") String companyDeviceToken,
    @Header("x-company-device-guid") String companyDeviceGuid,
    Callback<ResponseObject> cb);
@POST("/api/v1/user/controller")
ResponseObject registerController(
    @Body MyBundleObject registrationBundle,
    @Header("x-company-device-token") String companyDeviceToken,
    @Header("x-company-device-guid") String companyDeviceGuid);
 类似资料:
  • 获取此错误:Java . lang . runtime exception:org . simple framework . XML . core . method exception:Annotation @ org . simple framework . XML . element(data = false,name=,required=false,type=void)必须标记set或get

  • 首先,如果我对Rxjava的理解有错,请告诉我。 既然我们已经使用API查询使用referfit过滤了数据,那么对已经获得的数据进行操作有什么需要 为什么在RXJava中使用客户接口对象?因此,我们将其用于观察者或onNext()的位置。 Rxjava是否也有助于检索目的,或者它只是对已经获得的数据进行操作?

  • 我在使用rx android和改型时遇到网络线程异常。这是我的代码: 我们必须在完成http调用后取消订阅吗。知道吗? 异常如下所示。我在代码中的postdata方法的onError上得到这个异常:

  • 我正在使用翻新上传图像/文件 在这里,我发布了我的API调用以上传图像 请帮助我如何为这个调用编写接口,我已经用@part和@PartMap试过了,但是不起作用

  • 我是新来改装的。我已经在大多数Web服务中使用了volley,决定继续改进。但是我被Json解析所困,我在POJO类中得到了空数据。我尝试通过检查响应,我的响应是正确的,当我在模型类中解析时,我得到的是空白数据。请指导我,任何帮助都将不胜感激。 注意:POJO类是可parcelable,还包含cunstructor和gette/setter。我从这里删除了它,因为文本限制。 JSON响应

  • 我有这个代码: 当我运行它时,我在控制台上得到以下打印: 因此,它返回415个不受支持的媒体类型错误代码。 我在StackOverflow上发现,它可能是由上下文类型中的charset=UTF-8引起的。所以我的问题是,我如何编辑这个字段来满足我的需求(删除charset=UTF-8)。链接 如何更改该内容类型。由于我不熟悉HTTP协议,请详细说明。