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

仅使用表单数据进行改装2

陶高峯
2023-03-14

我正在尝试使用改装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-dataApplication/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生成的代码

共有3个答案

邹俊豪
2023-03-14

我想向现有请求传递一个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扩展名的数组?了解《邮递员》中的情况。

公羊渝
2023-03-14

在改装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);
易弘亮
2023-03-14

下面是使用请求主体的另一个解决方案:

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);

希望能有帮助。

 类似资料:
  • 我正在尝试获取请求中发送的确切的JSON。下面是我的代码: 但我只在日志中看到这一点:

  • 如果您不得不跟浏览器提交的表单数据打交道,视图函数里的代码将会很快变得 难以阅读。有不少的代码库被开发用来简化这个过程的操作。其中一个就是 WTForms , 这也是我们今天主要讨论的。如果您发现您自己陷入处理很多表单的境地,那您也许 应该尝试一下他。 要使用 WTForms ,您需要先将您的表单定义为类。我建议您将应用分割为多个模块 (大型应用) ,这样的话您仅需为表单添加一个独立的模块。 挖掘

  • 我想从Dockerfile创建一个具有初始数据库及其表的MySQL容器。 我还有一个特定的etc/mysql/mysql。conf.d/mysqld。cnf文件(我可以在Dockerfile中简单地使用添加指令。) 我希望Dockerfile创建一个MySQL映像,其中包含一个名为DBNAME的数据库,并包含以下表格: 我已经在这里寻找解决问题的方法,但没有找到解决方法。

  • 问题内容: 到目前为止,我已经使用纯JavaScript来验证表单,但是我需要在组合中添加mysqli查询。只有我对jquery和ajax不太了解。我可以做一个简单的登录表格,但这有点复杂。谁能给我有关如何添加jquery / ajax组件来验证这一点的任何指示: 问题答案: 您可以做的是发送$ .post像这样: 在你的 记得: 如果您要发布表单,请提交以添加到您的javascript函数中以手