我正在尝试使用改装2发出POST请求。请求类型是表单数据
而不是应用程序/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);
我只得到了空的身体。它正在和邮递员一起工作。
我也搜索了form-data
和Application/x-wow-form-urlencoded
,发现如果数据是二进制的,则使用form-data
,如果数据是ASCII,则使用Application/x-wow-form-urlencoded
我试图找到表单数据是否不支持改造?
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接口POST方法
@POST("somePostMethod")
Call<ResponseBody> somePostMethod(@Body RequestBody body);
希望能有帮助。
在改装2.0以执行如上所述的POST请求时,您应该像这样对您的参数使用请求体类型。
@Multipart
@POST("XXXX")
Call<PlanResponse> myPlans(@Part(Constants.ACTION_ID) RequestBody actionId, @Part(Constants.OFFER_CODE) RequestBody offerCode);
这里是如何从String获取请求体。
String somevalue = "somevalue";
RequestBody body = RequestBody.create(MediaType.parse("text/plain"), somevalue);
我想向现有请求传递一个ID数组。
我尝试了几个变体从这里,改装-发送请求体作为数组或数字,如何发送PUT请求与改装字符串和数组列表的模型我需要使用URL编码,但他们没有工作。然后我尝试Android改装发送数组作为x-ww-form-urlencoded。
我在列表参数中添加了[]
,并在其类型中添加了list
:
@FormUrlEncoded
@POST("your_request/")
fun sendIds(
@Field("token") token: String,
@Field("city_id") cityId: Int?,
@Field("description") description: String,
@Field("ids[]") ids: List<Int>? // Add '[]' here.
): Deferred<YourResponse>
然后像往常一样称之为(与Kotlin合作):
api.sendIds("f0123abc", null, "description", listOf(1, 2, 3)).await()
请参阅是否可以发送带有Postman Chrome扩展名的数组?了解《邮递员》中的情况。