Я пытаюсь сделать запрос POST с помощью Retrofit 2. Тип запроса 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-data
и application/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
Я могу добавить только HTTP-код, сгенерированный из POSTMAN