Как передать необработанные данные для отправки запроса - PullRequest
0 голосов
/ 20 октября 2018

Я столкнулся с какой-то странной проблемой, я отправляю запрос почтальону (используя raw body) и получаю правильный ответ, но когда я делаю запрос с помощью go, я получаю другой ответ.

Я пробовал это:

url := "http://example.com"
payload := strings.NewReader("key=value")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/x-www-form-urlencoded")
req.Header.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)
fmt.Println(string(body))

Но получил неправильный ответ, также попытался использовать значения

values := url.Values{}
values.Add("key", "value")
payload := strings.NewReader(values.Encode())

Но все же, получая неправильный ответ, есть ли способ имитировать необработанный метод почтальона в Go?

Почтальон автоматически добавляет куки в мой запрос, только что добавил заголовок Cookie, и проблема исправлена ​​

1 Ответ

0 голосов
/ 22 октября 2018

Вот совет почтальона: нажмите на кнопку / ссылку с кодом прямо под кнопкой отправки, рядом со ссылкой на файлы cookie, и во всплывающем окне вы можете выбрать, какой язык получить для вывода кода того, что будет выполнять почтальон, Go - этоопция здесь

Для вашего примера я думаю, что вам нужно сделать удалить строку, которая явно устанавливает content-type, чтобы она соответствовала необработанному ответу тела в почтальоне

...