Просмотр полной версии : SendGet
CleanLegend
09.09.2018, 11:53
Класс для отправки get запроса и получения ответа.
CleanLegend/SendGet(https://github.com/CleanLegend/SendGet) (https://github.com/CleanLegend/SendGet)
Пример использования:
C++:
MyGet MyGetGet
;
std
::
string myotvet
;
MyGetGet
.
Init
(
"mysite.com"
)
;
MyGetGet
.
SendGet
(
"test.php?user=test"
,
myotvet
)
;
MyGetGet
.
DeInit
(
)
;
УченикДимаса
09.09.2018, 13:17
давайте кто-то еще сделает класс на класс для гет запроса
Целый класс для одного GET запроса.
Не проще так:
C++:
#include
#pragma comment (lib, "WinInet.lib")
enum
RequestType
{
GET
,
POST
}
;
char
*
SendRequest
(
int
type
,
char
*
site
,
char
*
file
,
char
*
message
)
{
char
*
fileAndMessage
;
DWORD size
;
char
szBuffer
[
1024
]
;
memset
(
&
szBuffer
,
NULL
,
sizeof
(
szBuffer
)
)
;
HINTERNET hSession
=
InternetOpen
(
"App"
,
INTERNET_OPEN_TYPE_PRECONFIG
,
NULL
,
NULL
,
0
)
;
if
(
hSession
!=
NULL
)
{
HINTERNET hConnect
=
InternetConnect
(
hSession
,
site
,
INTERNET_DEFAULT_HTTP_PORT
,
NULL
,
NULL
,
INTERNET_SERVICE_HTTP
,
0
,
1
)
;
if
(
hConnect
!=
NULL
)
{
if
(
type
==
RequestType
::
GET
)
sprintf
(
fileAndMessage
,
"%s?%s"
,
file
,
message
)
;
HINTERNET hRequest
=
HttpOpenRequest
(
hConnect
,
(
type
==
RequestType
::
POST
?
"POST"
:
"GET"
)
,
(
type
==
RequestType
::
POST
?
file
:
fileAndMessage
)
,
NULL
,
NULL
,
0
,
0
,
1
)
;
if
(
hRequest
!=
NULL
)
{
LPCSTR header
;
header
=
"Accept: */*"
;
HttpAddRequestHeaders
(
hRequest
,
header
,
strlen
(
header
)
,
HTTP_ADDREQ_FLAG_ADD
)
;
header
=
"Content-Type: application/x-www-form-urlencoded"
;
HttpAddRequestHeaders
(
hRequest
,
header
,
strlen
(
header
)
,
HTTP_ADDREQ_FLAG_ADD
)
;
if
(
HttpSendRequest
(
hRequest
,
NULL
,
0
,
(
type
==
RequestType
::
POST
?
message
:
NULL
)
,
(
type
==
RequestType
::
POST
?
strlen
(
message
)
:
NULL
)
)
)
{
if
(
InternetReadFile
(
hRequest
,
szBuffer
,
sizeof
(
szBuffer
)
,
&
size
)
)
return
szBuffer
;
}
}
InternetCloseHandle
(
hRequest
)
;
}
InternetCloseHandle
(
hConnect
)
;
}
InternetCloseHandle
(
hSession
)
;
return
FALSE
;
}
UPD: С текущими моими знаниями, этот код выглядит не очень.
Целый класс для одного GET запроса.
ООП головного мозга
@CleanLegend (https://www.blast.hk/members/268/) буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.
iAmerican
24.01.2019, 21:21
@CleanLegend (https://www.blast.hk/members/268/) буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.
Ты не понимаешь что ты хочешь сам ,по этому и не получается.
Ты не понимаешь что ты хочешь сам ,по этому и не получается.
Я понимаю что хочу. И с этим мне фип помог. Не умничай не по делу.
Целый класс для одного GET запроса.
Не проще так:
C++:
#include
#pragma comment (lib, "WinInet.lib")
enum
RequestType
{
GET
,
POST
}
;
char
*
SendRequest
(
int
type
,
char
*
site
,
char
*
file
,
char
*
message
)
{
char
*
fileAndMessage
;
DWORD size
;
char
szBuffer
[
1024
]
;
memset
(
&
szBuffer
,
NULL
,
sizeof
(
szBuffer
)
)
;
HINTERNET hSession
=
InternetOpen
(
"App"
,
INTERNET_OPEN_TYPE_PRECONFIG
,
NULL
,
NULL
,
0
)
;
if
(
hSession
!=
NULL
)
{
HINTERNET hConnect
=
InternetConnect
(
hSession
,
site
,
INTERNET_DEFAULT_HTTP_PORT
,
NULL
,
NULL
,
INTERNET_SERVICE_HTTP
,
0
,
1
)
;
if
(
hConnect
!=
NULL
)
{
if
(
type
==
RequestType
::
GET
)
sprintf
(
fileAndMessage
,
"%s?%s"
,
file
,
message
)
;
HINTERNET hRequest
=
HttpOpenRequest
(
hConnect
,
(
type
==
RequestType
::
POST
?
"POST"
:
"GET"
)
,
(
type
==
RequestType
::
POST
?
file
:
fileAndMessage
)
,
NULL
,
NULL
,
0
,
0
,
1
)
;
if
(
hRequest
!=
NULL
)
{
LPCSTR header
;
header
=
"Accept: */*"
;
HttpAddRequestHeaders
(
hRequest
,
header
,
strlen
(
header
)
,
HTTP_ADDREQ_FLAG_ADD
)
;
header
=
"Content-Type: application/x-www-form-urlencoded"
;
HttpAddRequestHeaders
(
hRequest
,
header
,
strlen
(
header
)
,
HTTP_ADDREQ_FLAG_ADD
)
;
if
(
HttpSendRequest
(
hRequest
,
NULL
,
0
,
(
type
==
RequestType
::
POST
?
message
:
NULL
)
,
(
type
==
RequestType
::
POST
?
strlen
(
message
)
:
NULL
)
)
)
{
if
(
InternetReadFile
(
hRequest
,
szBuffer
,
sizeof
(
szBuffer
)
,
&
size
)
)
return
szBuffer
;
}
}
InternetCloseHandle
(
hRequest
)
;
}
InternetCloseHandle
(
hConnect
)
;
}
InternetCloseHandle
(
hSession
)
;
return
FALSE
;
}
Точно, в класс. А проще всего?
Точно, в класс. А проще всего?
а проще юзать функи фипа, она читают весь док
а проще юзать функи фипа, она читают весь док
Я не занимаюсь сайтами, а особенно запросами. Не для меня.
itsLegend
30.01.2019, 20:19
Класс для отправки get запроса и получения ответа.
CleanLegend/SendGet(https://github.com/CleanLegend/SendGet) (https://github.com/CleanLegend/SendGet)
Пример использования:
C++:
MyGet MyGetGet
;
std
::
string myotvet
;
MyGetGet
.
Init
(
"mysite.com"
)
;
MyGetGet
.
SendGet
(
"test.php?user=test"
,
myotvet
)
;
MyGetGet
.
DeInit
(
)
;
Мне кажется ты промахнулся с 27 строчкой
CleanLegend/SendGet(https://github.com/CleanLegend/SendGet/blob/master/myGet.cpp#L27) (https://github.com/CleanLegend/SendGet/blob/master/myGet.cpp#L27)
CatKnight
08.04.2019, 17:01
Я понимаю что хочу. И с этим мне фип помог. Не умничай не по делу.
Поделиться можешь?)
Класс для отправки get запроса и получения ответа.
Как лучше всего использовать?
Сразу Init, SendGet и DeInit
Init при подключении плагина, SendGet при надобности и DeInit при отключении плагина
CleanLegend
03.07.2019, 14:39
Как лучше всего использовать?
Сразу Init, SendGet и DeInit
Init при подключении плагина, SendGet при надобности и DeInit при отключении плагина
1
А можно как-то убрать мелкие фризы при отправке get запроса?
CleanLegend
13.02.2022, 18:18
А можно как-то убрать мелкие фризы при отправке get запроса?
в отдельном потоке отправляй запрос
в отдельном потоке отправляй запрос
Начитавшись сообщений в плане "забудь о потоках", "потоки - зло", "лучше их вообще не используй", как то уже не особо и хочется добавлять даже 1 поток в свой плагин
Dark_Knight
14.02.2022, 23:52
Начитавшись сообщений в плане "забудь о потоках", "потоки - зло", "лучше их вообще не используй", как то уже не особо и хочется добавлять даже 1 поток в свой плагин
Иногда таки их можно юзать. Лично я юзал для парсинга страниц ибо это так надолго фризило поток игры, что там по другому никак.
EclipsedFlow
16.02.2022, 01:16
C++:
#include -- Библиотека для синхронизации потоков
Чёрный вурдалак
21.03.2022, 21:55
Иногда таки их можно юзать. Лично я юзал для парсинга страниц ибо это так надолго фризило поток игры, что там по другому никак.
Рекомендую ознакомиться. С++ 20
Coroutines (C++20) - cppreference.com (https://www.blast.hk/redirect/aHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbm d1YWdlL2Nvcm91dGluZXM)
en.cppreference.com
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot