Данные формы модернизации - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь попасть в конечную точку, требующую данных формы, и с почтальоном я могу получить 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--

1 Ответ

0 голосов
/ 09 февраля 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...