Как сделать почтовый запрос к urlscanio с помощью Go? - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь отправить URL-адрес для сканирования на urlscan.io. Я могу выполнить поиск, но у меня есть проблемы с отправками, особенно с правильной отправкой правильных заголовков / закодированных данных.

со своего сайта о том, как отправить URL:

curl -X POST "https://urlscan.io/api/v1/scan/" \ -H "Тип контента: приложение / json" \ -H "API-ключ: $ apikey" \ -d "{\" url \ ": \" $ url \ ", \" public \ ": \" on \ "}"

Это работает для удовлетворения требований заголовка ключа Api, но

req.Header.Add("API-Key", authtoken)

Это моя попытка, которая не удалась

data := make(url.Values)
data.Add("url", myurltoscan)

Свойство URL, с которым я очень сильно боролся.

Это моя ошибка: "message": "Отсутствующие свойства URL", "description": "Предоставленный URL не был в порядке, укажите его, включая протокол, хост и путь (например, http://example.com/bar)", «статус»: 400

1 Ответ

0 голосов
/ 08 ноября 2018

url.Value - это map[string][]string, содержащее значения, используемые в параметрах запроса, или POST форма. Вам это понадобится, если вы пытаетесь сделать что-то вроде:

curl -X GET https://urlscan.io/api/v1/scan?url=<urltoscan>

или

curl -X POST -F 'url=<urltoscan>' https://urlscan.io/api/v1/scan

См. Документацию https://golang.org/pkg/net/url/#Values.

Чтобы отправить обычный запрос POST с данными JSON, вы можете закодировать JSON в байтах и ​​отправить с помощью http.Post:

var payload = []byte(`{"url":"<your-url>","public":"on"}`)
req, err := http.NewRequest("POST", url, 
bytes.NewBuffer(payload))
req.Header.Set("API-Key", authtoken)
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
        panic(err)
}
defer resp.Body.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...