Всем привет. пытаюсь отослать http запрос. но почему-то он битый. когда повторяю через браузер, то срабатывает
Еще какая-то странность с кодировкой. для справки. апи кей и параметры для запроса беру из конфига в формате json
Подскажите. в какую сторону смотреть?
package Client
import (
"csgoMarketBot/Client/Dto"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
const ApiEndPoint = "https://market.csgo.com/api/v2/"
type ClientApi interface {
getRequestBody(method string, query map[string]string) (requestBody Dto.RequestBody, err error)
}
type Client struct {
apiKey string
}
func NewClient(apiKey string) *Client {
return &Client{apiKey: apiKey}
}
func (client *Client) FetchOrdersByHashName(weaponHashNames []string) {
query := make(map[string]string, 0)
for _, v := range weaponHashNames {
query["list_hash_name[]"] = v
}
res, err := client.getRequestBody("search-list-items-by-hash-name-all", query)
if err != nil {
fmt.Println("Error: " + err.Error())
}
fmt.Println(res)
}
func (client *Client) getRequestBody(method string, query map[string]string) (requestBody Dto.RequestBody, err error) {
queryParams := url.Values{}
queryParams.Add("key", client.apiKey)
for k, v := range query {
queryParams.Add(k, v)
}
urlMethod := ApiEndPoint + method + "?" + queryParams.Encode()
req, err := http.NewRequest("get", urlMethod, nil)
if err != nil {
println("error: " + err.Error())
}
httpClient := &http.Client{}
response, err := httpClient.Do(req)
println(response.Request.URL.RequestURI())
if err != nil {
panic(err)
}
bodyBytes, err := io.ReadAll(response.Body)
if err != nil {
panic(err)
}
println(string(bodyBytes))
err = json.Unmarshal(bodyBytes, &requestBody)
if err != nil {
panic(err)
}
return requestBody, nil
}
Вывод в консоль
/api/v2/search-list-items-by-hash-name-all?key=aiBJm1xsdfb0d30xY0nV066&list_hash_name%5B%5D=SCAR-20+%7C+Contractor+%28Well-Worn%29
<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare</center>
</body>
</html>
Конфиг:
{
"ApiKey":"aiBJm1xuvasdasdY0nV066",
"PurchaseList":[
{
"MarketName": "SCAR-20 | Contractor (Well-Worn)",
"SellPrice": 1.7,
"BuyPrice": 1.2,
"LimitOwnership": 5
}
]
}