Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Обращение и получение ответа от API

Страниц (1): [1]
 

1. Remyc - 12 Марта, 2022 - 19:58:57 - перейти к сообщению
У меня на ПК работает сервер, при обращении к нему по адресу(для просмотра ссылки Вам необходимо авторизоваться) сервер возвращает JSON. В браузере все норм, сервер возвращает нужные данные, пытаюсь обратиться через кибор таким способом:
CODE:

string T;
if (sendgetweb(#T, "", "GET", "http:/"+"/localhost:8000", "api/events/?format=json", 3000)>0) messagebox (T);


ответа не получаю.

так же пробовал через WinInet:
CODE:

#define NULL 0
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 8000
#define INTERNET_SERVICE_HTTP 3
#define INTERNET_FLAG_SECURE 8388608
#define INTERNET_FLAG_NO_CACHE_WRITE 67108864


external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll");
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll");
external(INT, "HttpOpenRequest", "HttpOpenRequestA", "Wininet.dll");
external(INT, "HttpSendRequest", "HttpSendRequestA", "Wininet.dll");
external(INT, "InternetReadFile", "InternetReadFile", "Wininet.dll");
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll");


int hInternet = InternetOpen(
"My bot",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL,
0);

if (hInternet != NULL)
{

int hConnect = InternetConnect(
hInternet,
"127.0.0.1",
INTERNET_DEFAULT_HTTPS_PORT,
NULL,NULL,
INTERNET_SERVICE_HTTP,
0,
1);

if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(
hConnect,
"GET",
"api/events/?format=json",
NULL,
NULL,
0,
INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,
1);


if (hRequest != NULL)
{
int bSend = HttpSendRequest(hRequest,
NULL,
0,
NULL,
0);

string fr="";
char szData[1024];
int dwBytesRead;

loop()
{
int bRead = InternetReadFile(
hRequest,
address(#szData[0]),
sizearray(szData)-1,
address(#dwBytesRead));

fr=fr+format(#szData[0]);

if (bRead == FALSE || dwBytesRead == 0) break;
}

messagebox (fr);
InternetCloseHandle(hRequest);
}

InternetCloseHandle(hConnect);
}

InternetCloseHandle(hInternet);
}


В результате получаю много букв Н.
При дебаге выяснил - bSend возвращает 0.

В чем ошибка?
(Добавление)
Проблема решена следующим образом:
Во втором варианте значение флага INTERNET_FLAG_SECURE установлено 0
Если оставить флаг 8388608, то будет открыто HTTPS соединение, сервер настроен на HTTP

А вот что делать с sendgetweb, я так и не понял, сервер вообще не видит запроса...
2. Kibor - 12 Марта, 2022 - 23:31:42 - перейти к сообщению
А если
if (sendgetweb(#T, "", "GET", "https:/
?

За этот флаг отвечает что указано
http
или
https
3. Remyc - 13 Марта, 2022 - 01:17:38 - перейти к сообщению
Пробовал такие варианты:
Спойлер (Отобразить)

Спойлер (Отобразить)

Сервер не реагирует, входящие запросы не видит.

Powered by ExBB FM 1.0 Final