ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   SendGet (https://forum.antichat.xyz/showthread.php?t=1324280)

CleanLegend 09.09.2018 11:53

Класс для отправки get запроса и получения ответа.

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

Цитата:

Сообщение от Rinat_Namazov

Целый класс для одного GET запроса.

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

AnWu 21.01.2019 21:36

@CleanLegend буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.

iAmerican 24.01.2019 21:21

Цитата:

Сообщение от DonHomka

@CleanLegend буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.

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

AnWu 24.01.2019 21:27

Цитата:

Сообщение от iAmerican

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

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

sqlaer. 27.01.2019 01:06

Цитата:

Сообщение от Rinat_Namazov

Целый класс для одного 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.

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

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

sqlaer. 27.01.2019 01:52

Цитата:

Сообщение от DonHomka

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

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


Время: 02:18