gpt4 book ai didi

android - 仅使用表单数据进行改造 2

转载 作者:IT老高 更新时间:2023-10-28 23:27:47 27 4
gpt4 key购买 nike

我正在尝试使用 Retrofit 2 发出 POST 请求。请求类型是 form-data NOT application/x-www-form-urlencoded

我只发布数据而不是请求中的文件,响应是 JSON 的形式。

我试过 @FormUrlEncoded, @Multipart 但它不起作用。

我已经尝试了以下请求

1.第一次尝试

@FormUrlEncoded
@POST("XXXX")
Call<PlanResponse> getPlanName(@Field(Constants.ACTION_ID) String actionId, @Field(Constants.OFFER_CODE) String offerCode);

<强>2。第二次尝试

@Headers({"Content-Type: multipart/form-data","Content-Type: text/plain"})
@FormUrlEncoded
@POST("XXXX")
Call<PlanResponse> getPlans(@Body @FieldMap(encoded = false) Map<String, String> data);

3.第三次尝试

@Headers("Content-Type: multipart/form-data")
@Multipart
@POST("XXXX")
Call<PlanResponse> myPlans(@Part(Constants.ACTION_ID) String actionId, @Part(Constants.OFFER_CODE) String offerCode);

我只是将正文设为 null。它正在与 POSTMAN 合作。

我也搜索了 form-dataapplication/x-www-form-urlencoded 发现如果数据是二进制的,那么使用 form- data 如果数据是 ASCII 则使用 application/x-www-form-urlencoded

我正在尝试查找 Retrofit 不支持表单数据吗?

postman 请求

Cache-Control: no-cache
Postman-Token: XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX-XXXXXXXXXXXX
Content-Type: multipart/form-data; boundary=---- WebKitFormBoundaryXXXXXXXXXXXX


----WebKitFormBoundaryXXXXXXXXXXXX
Content-Disposition: form-data; name="actionId"

1000
----WebKitFormBoundaryXXXXXXXXXXXX
Content-Disposition: form-data; name="offerCode"

MYCODE
----WebKitFormBoundaryXXXXXXXXXXXX

我只能添加从 POSTMAN 截取的 HTTP 生成代码

最佳答案

这是另一个使用请求正文的解决方案:

RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("param1", param1)
.addFormDataPart("param2", param2)
.build();

apiInterface.somePostMethod(requestBody).enqueue(
//onResponse onFailure methods
);

这是我的 api 接口(interface) POST 方法

@POST("somePostMethod")
Call<ResponseBody> somePostMethod(@Body RequestBody body);

希望对你有帮助。

关于android - 仅使用表单数据进行改造 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com