Я делаю запрос к API на основе https. При вводе URL-адреса запроса в Chrome все работает нормально. При выполнении такой же запрос, используя net/http
пакет в Go, я получаю ошибку об отсутствии подобласти:Получать тело запроса HTTP
"error": {
"type": "ApiUnknown",
"message": "No api specified (via subdomain)"
}
Я полагаю, Chrome и Go-то посылает несколько различных запросов HTTP, поэтому, мне нужно знать, что может быть эти различия ,
В Chrome я могу использовать инструменты разработчика, чтобы увидеть отправленный запрос.
Как я могу получить тело запроса HTTP, отправленное из пакета http
?
я могу сделать следующее:
package main
import (
"net/http"
"os"
)
func main() {
urlStr := "https://api-name.subdomain.domain.org/page?param=value"
//client := &http.Client{}
req, err := http.NewRequest("GET", urlStr, nil)
if err != nil {
panic(err)
}
req.Write(os.Stdout) // Will this output be equal to the one being sent to the server?
//resp, err := client.Do(req)
}
Выход:
GET/страница парам = значение HTTP/1.1
Ведущий: апи-name.subdomain.domain. org
User-Agent: Go 1.1 пакет http
площадка:http://play.golang.org/p/Oku0O1yiBt
Но я не уверен, добавляет ли Транспорт что-то до того, как запрос посылается, или, если это на самом деле все, что есть.
Дополнительные заголовки могут быть установлены при отправке запроса (например, «Авторизация», если в URL-адресе, «Реферере» есть базовые учетные данные авторизации, в случае перенаправления и т. Д.). Вы действительно не предоставили много информации о том, почему ваш сервер может отклонять ваш запрос. –
@JamesHenstridge: Да, я предположил, что это может быть так. И нет, я не предоставил много информации, потому что я действительно не знаю. Вот почему я хотел бы видеть фактический орган запроса. Я принимаю то же самое 'urlStr' и вставляю его в Chrome на том же компьютере и получаю другой ответ. Я добавил фактический ответ, который дает мне HTTP-запрос Go. – ANisus
Я мог бы добавить, что, хотя urlStr не является фактическим url (ну, duh), он имеет ту же структуру. Он даже имеет тире в 'api-name', поэтому на мгновение я подумал, что у Go может быть URL-код, закодированный тире, но это не так. – ANisus