PDA

Просмотр полной версии : 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
давайте кто-то еще сделает класс на класс для гет запроса

#Rin
09.09.2018, 13:21
Целый класс для одного 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: С текущими моими знаниями, этот код выглядит не очень.

Лисёнок
09.09.2018, 13:55
Целый класс для одного GET запроса.


ООП головного мозга

AnWu
21.01.2019, 21:36
@CleanLegend (https://www.blast.hk/members/268/) буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.

iAmerican
24.01.2019, 21:21
@CleanLegend (https://www.blast.hk/members/268/) буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.


Ты не понимаешь что ты хочешь сам ,по этому и не получается.

AnWu
24.01.2019, 21:27
Ты не понимаешь что ты хочешь сам ,по этому и не получается.


Я понимаю что хочу. И с этим мне фип помог. Не умничай не по делу.

sqlaer.
27.01.2019, 01:06
Целый класс для одного 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
;
}





Точно, в класс. А проще всего?

AnWu
27.01.2019, 01:51
Точно, в класс. А проще всего?


а проще юзать функи фипа, она читают весь док

sqlaer.
27.01.2019, 01:52
а проще юзать функи фипа, она читают весь док


Я не занимаюсь сайтами, а особенно запросами. Не для меня.

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
Я понимаю что хочу. И с этим мне фип помог. Не умничай не по делу.


Поделиться можешь?)

Шурик
02.07.2019, 21:39
Класс для отправки get запроса и получения ответа.


Как лучше всего использовать?


Сразу Init, SendGet и DeInit

Init при подключении плагина, SendGet при надобности и DeInit при отключении плагина

CleanLegend
03.07.2019, 14:39
Как лучше всего использовать?

Сразу Init, SendGet и DeInit

Init при подключении плагина, SendGet при надобности и DeInit при отключении плагина



1

Vegas
13.02.2022, 17:28
А можно как-то убрать мелкие фризы при отправке get запроса?

CleanLegend
13.02.2022, 18:18
А можно как-то убрать мелкие фризы при отправке get запроса?


в отдельном потоке отправляй запрос

Vegas
13.02.2022, 18:24
в отдельном потоке отправляй запрос


Начитавшись сообщений в плане "забудь о потоках", "потоки - зло", "лучше их вообще не используй", как то уже не особо и хочется добавлять даже 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