Что нового

Сеть, интернет WinHttp, ошибка, неверный запрос

Alsyone

Новичок
Сообщения
10
Репутация
0
Функция
Код:
Func _credit_info($access_id, $tonce, $authorization)
    Local $url = "https://api.coinex.com/v1/credit/info"
    Local $postData = '?access_id=' & $access_id & '&tonce=' & $tonce
    Local $hOpen = _WinHttpOpen()
    Local $hConnect = _WinHttpConnect($hOpen, "api.coinex.com", 443) ; Используем порт 443 для HTTPS
    Local $hRequest = _WinHttpOpenRequest($hConnect, "GET", "/v1/credit/info" & $postData)
    _WinHttpAddRequestHeaders($hRequest, "Content-Type: application/json")
    _WinHttpAddRequestHeaders($hRequest, "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36")
    _WinHttpAddRequestHeaders($hRequest, "Authorization: " & $authorization)
    _WinHttpSendRequest($hRequest)
    _WinHttpReceiveResponse($hRequest)
    Local $sResponse = _WinHttpReadData($hRequest)
    Return $sResponse
EndFunc

возвращает ошибку:
<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>cloudflare</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->

Это один из множества вариантов что пробовал, перечитал форум, мучил GPT, но ничего не помогает. Помогите пожалуйста.
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
порт убери, из за него у тебя и вылетает ошибка запроса
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
с портом (pic 1)
без порта (pic 2)
Как у вас я точно не знаю, но в моем случае еще как влияет
или просто пробуйте делать не через WinHttp
 

Вложения

  • 1.png
    1.png
    52.1 КБ · Просмотры: 2
  • 2.png
    2.png
    37.4 КБ · Просмотры: 2
Автор
A

Alsyone

Новичок
Сообщения
10
Репутация
0
Код:
Func _AdlibRegister()
    Local $_StringBetween=_StringBetween(BinaryToString(InetRead('https://api.coinex.com/v1/market/ticker?market=CETUSDT', 1)), '"date": ', ',')
        If Not @error Then
            $tonce=Number($_StringBetween[0])
            Global $StringToSign='access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key
            Global $authorization = StringTrimLeft(_Crypt_HashData($StringToSign, $CALG_MD5), 2) ; Create a hash of the text entered.
            ConsoleWrite('$authorization='&$authorization&@CRLF)
            Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
            $oHTTP.Open("GET", 'https://api.coinex.com/', False)
            $oHTTP.SetRequestHeader("Content-Type", "application/json")
            $oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36")
            $oHTTP.SetRequestHeader("authorization", $authorization)
            $oHTTP.Send('v1/credit/info?access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key)
            Local $sReceived = $oHTTP.ResponseText

            ConsoleWrite($sReceived&@CRLF)
        EndIf
EndFunc

Пробовал через obj всякоразно урлы параметры везде сувать, сенд пустым отправлять результат такой:
$oHTTP.Send('v1/credit/info?access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key)
$oHTTP.Send('v1/credit/info?access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key)^ ERROR
Сообщение автоматически объединено:

Суть в том, чтобы в заголовке отправить авторизацию (МД5 ключ), а это Я так понимаю можно сделать тока через winhttp, а он не работает нормально...
Сообщение автоматически объединено:

с портом (pic 1)
без порта (pic 2)
Как у вас я точно не знаю, но в моем случае еще как влияет
или просто пробуйте делать не через WinHttp
А вот тут интересно. У Вас ошибка тонса, это потому что он не указан в запросе. Если его указать правильно и без порта, то будет та же ошибка.
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
Код:
Func _AdlibRegister()
    Local $_StringBetween=_StringBetween(BinaryToString(InetRead('https://api.coinex.com/v1/market/ticker?market=CETUSDT', 1)), '"date": ', ',')
        If Not @error Then
            $tonce=Number($_StringBetween[0])
            Global $StringToSign='access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key
            Global $authorization = StringTrimLeft(_Crypt_HashData($StringToSign, $CALG_MD5), 2) ; Create a hash of the text entered.
            ConsoleWrite('$authorization='&$authorization&@CRLF)
            Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
            $oHTTP.Open("GET", 'https://api.coinex.com/', False)
            $oHTTP.SetRequestHeader("Content-Type", "application/json")
            $oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36")
            $oHTTP.SetRequestHeader("authorization", $authorization)
            $oHTTP.Send('v1/credit/info?access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key)
            Local $sReceived = $oHTTP.ResponseText

            ConsoleWrite($sReceived&@CRLF)
        EndIf
EndFunc

Пробовал через obj всякоразно урлы параметры везде сувать, сенд пустым отправлять результат такой:
$oHTTP.Send('v1/credit/info?access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key)
$oHTTP.Send('v1/credit/info?access_id='&$access_id&'&tonce='&$tonce&'&secret_key='&$secret_key)^ ERROR
Сообщение автоматически объединено:

Суть в том, чтобы в заголовке отправить авторизацию (МД5 ключ), а это Я так понимаю можно сделать тока через winhttp, а он не работает нормально...
в заголовке отправляется обычный sha256, который можно сгенерировать
Код:
_Crypt_HashData
 
Автор
A

Alsyone

Новичок
Сообщения
10
Репутация
0
в заголовке отправляется обычный sha256, который можно сгенерировать
Код:
_Crypt_HashData
Не не. Эта функчия как раз и получает тонс. Хэш генерирует другая функция, Я её не указал. Да Это именно она.
Сообщение автоматически объединено:

Не не. Эта функчия как раз и получает тонс. Хэш генерирует другая функция, Я её не указал. Да Это именно она.
Ой нет. Указал. Но при чем тут она? Хэш генерируется. Его надо передать в заголовке, а выскакивает ошибка на сенд...
Сообщение автоматически объединено:

Просто тот тонс который генерируется иногда не принимается. А и серверный свой принимает всегда.
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
Не не. Эта функчия как раз и получает тонс. Хэш генерирует другая функция, Я её не указал. Да Это именно она.
Сообщение автоматически объединено:


Ой нет. Указал. Но при чем тут она? Хэш генерируется. Его надо передать в заголовке, а выскакивает ошибка на сенд...
Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "https://api.coinex.com/v1/credit/info?access_id=63CC119843E142999890B9A9D83B6E38&tonce=1708250386279")
$oHTTP.SetRequestHeader("Content-Type", "application/json")
$oHTTP.SetRequestHeader("Authorization", "9a5b76025be309abc6034e952299ad09bd50fd8256f3232a0281d697e304ef88")
$oHTTP.Send('')
MsgBox(0,"",$oHTTP.ResponseText)

просто банальный запрос на пример того, что все работает (не беря во внимание что tonce просрочился)
Сообщение автоматически объединено:

я прям в структуру api не вчитывался как и что должно работать, мне главное было проверить что он отправляется и есть нормальный ответ от сервера что была допущена именно ошибка в самом запросе
 
Автор
A

Alsyone

Новичок
Сообщения
10
Репутация
0
https://viabtc.github.io/coinex_api_en_doc/#docsgeneral004_common003_api_signature
https://github.com/coinexcom/coinex_exchange_api/wiki/012security_authorization
Вот их API про подпись если что.
Сообщение автоматически объединено:

Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "https://api.coinex.com/v1/credit/info?access_id=63CC119843E142999890B9A9D83B6E38&tonce=1708250386279")
$oHTTP.SetRequestHeader("Content-Type", "application/json")
$oHTTP.SetRequestHeader("Authorization", "9a5b76025be309abc6034e952299ad09bd50fd8256f3232a0281d697e304ef88")
$oHTTP.Send('')
MsgBox(0,"",$oHTTP.ResponseText)

просто банальный запрос на пример того, что все работает (не беря во внимание что tonce просрочился)
Сообщение автоматически объединено:

я прям в структуру api не вчитывался как и что должно работать, мне главное было проверить что он отправляется и есть нормальный ответ от сервера что была допущена именно ошибка в самом запросе
Эммм... Хммм... У меня ошибка вылетает... :-(
Что может быть у меня не так?
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
https://viabtc.github.io/coinex_api_en_doc/#docsgeneral004_common003_api_signature
https://github.com/coinexcom/coinex_exchange_api/wiki/012security_authorization
Вот их API про подпись если что.
Сообщение автоматически объединено:


Эммм... Хммм... У меня ошибка вылетает... :-(
Что может быть у меня не так?
какая у вас винда?
Сообщение автоматически объединено:

возможно дело в tls
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
Первый пак семерки MSDN. Автоит 3.3.8.1 TLS это как и что проверить починить, подскажите пожалуйста. :smile:
https://download.microsoft.com/down...F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
попробуйте установить и ребутнуть комп, а потом проверить
ну и еще проверить
Через свойства интернета
Нажмите сочетание клавиш Win+R и введите inetcpl.cpl
Перейдите во вкладку "Дополнительно".
В списке найдите протокол TLS 1.0, TLS 1.1 и TLS 1.2
Поставьте галочку, чтобы включить и нажмите применить
 
Автор
A

Alsyone

Новичок
Сообщения
10
Репутация
0
https://download.microsoft.com/down...F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
попробуйте установить и ребутнуть комп, а потом проверить
ну и еще проверить
Через свойства интернета
Нажмите сочетание клавиш Win+R и введите inetcpl.cpl
Перейдите во вкладку "Дополнительно".
В списке найдите протокол TLS 1.0, TLS 1.1 и TLS 1.2
Поставьте галочку, чтобы включить и нажмите применить
Галочки стояли, патч помог! Ееехххууу! Вы просто мой спаситель! Даже не знаю как вас и благодарить!! Огромнейшее человеческое спасибо!!! :smile:
 
Верх