Я пытаюсь попасть в конечную точку, требующую данных формы, и с почтальоном я могу получить 200 со следующим, обратите внимание, что я заменил URL-адрес на /url
, ключ API на key
, хост сhost
и реферер с referrer
, но они точны и совпадают в обоих случаях.
Когда я смотрю на код, сгенерированный почтальоном, я вижу
POST /url?api_key=key HTTP/1.1
Host: host
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Referer: referrer
cache-control: no-cache
Postman-Token: 00ad8c82-be8a-4c0d-a79b-fd7e3e941430
Content-Disposition: form-data; name="user[first_name]"
first
Content-Disposition: form-data; name="user[last_name]"
last
Content-Disposition: form-data; name="user[email]"
flast@gmail.com
Content-Disposition: form-data; name="user[terms_and_conditions]"
1
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Однако при модернизации я сохраняюполучение 422, и запрос выглядит так от stetho
Request URL: /url?api_key=key
Request Method:POST
Request Headers
Provisional headers are shown
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip
Connection:Keep-Alive
Content-Length:563
Content-Type:multipart/form-data;
Host: host
Referer: referrer
User-Agent:okhttp/3.10.0
Query String Parameters
api_key: key
Request Payload
--b9048dea-56eb-4fad-8436-b1d70b753bb1
Content-Disposition: form-data; name="user[first_name]"
Content-Length: 5
first
--b9048dea-56eb-4fad-8436-b1d70b753bb1
Content-Disposition: form-data; name="user[last_name]"
Content-Length: 4
last
--b9048dea-56eb-4fad-8436-b1d70b753bb1
Content-Disposition: form-data; name="user[email]"
Content-Length: 15
flast@gmail.com
--b9048dea-56eb-4fad-8436-b1d70b753bb1
Content-Disposition: form-data; name="user[terms_and_conditions]"
Content-Length: 1
1
--b9048dea-56eb-4fad-8436-b1d70b753bb1--
Я пытался использовать тело многочастного запроса
@POST("/url")
@Headers(
"Accept: application/json, text/javascript, */*; q=0.01",
"Content-Type: multipart/form-data;",
"Referer: referrer"
)
fun signUp(
@Query("api_key") apiKey: String,
@Body requestBody : RequestBody
): Single<NetworkResponse<AuthResponse, Error>>
Я также пытался использовать @PartMap (содни и те же заголовки)
@Multipart
fun signUp(
@Query("api_key") apiKey: String,
@PartMap map: Map<String, String>
): Single<NetworkResponse<AuthResponse, Error>>
Наконец, я попытался использовать несколько полей @Part в службе (с одинаковыми заголовками)
@Multipart
fun signUp(
@Query("api_key") apiKey: String,
@Part("user[first_name") firstName: RequestBody,
@Part("user[first_name") lastName: RequestBody,
@Part("user[first_name") email: RequestBody,
@Part("user[first_name") toc: RequestBody
): Single<NetworkResponse<AuthResponse, Error>>
Ни одна из этих опций не работает или не дает мнетот же результат, что и у Почтальона.Различия, которые я вижу, состоят в том, что детали имеют длину содержимого с модификацией и что между этими случайными строковыми разделителями есть.
У меня нет API, поэтому я не могу его изменить.
Редактировать Я удалил Content-Length, как описано в ответе ниже, и все равно получаю 422. Вывод теперь выглядит так с теми же заголовками.Так что, похоже, последнее оставшееся различие - это случайные строки
--5d70bd2c-10e7-4444-84bc-aab7cb3e86ee
Content-Disposition: form-data; name="user[first_name]"
Zachary
--5d70bd2c-10e7-4444-84bc-aab7cb3e86ee
Content-Disposition: form-data; name="user[last_name]"
sweigart
--5d70bd2c-10e7-4444-84bc-aab7cb3e86ee
Content-Disposition: form-data; name="user[email]"
zsweigart@gmail.com
--5d70bd2c-10e7-4444-84bc-aab7cb3e86ee
Content-Disposition: form-data; name="user[terms_and_conditions]"
1
--5d70bd2c-10e7-4444-84bc-aab7cb3e86ee--