 |
|

09.09.2018, 11:53
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Класс для отправки 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
|
|
Познающий
Регистрация: 02.07.2013
Сообщений: 37
С нами:
6769716
Репутация:
58
|
|
давайте кто-то еще сделает класс на класс для гет запроса
|
|
|

09.09.2018, 13:21
|
|
Познавший АНТИЧАТ
Регистрация: 09.08.2015
Сообщений: 1,213
С нами:
5663255
Репутация:
183
|
|
Целый класс для одного 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
|
|
Новичок
Регистрация: 08.09.2018
Сообщений: 6
С нами:
4042407
Репутация:
3
|
|
Сообщение от Rinat_Namazov
Целый класс для одного GET запроса.
ООП головного мозга
|
|
|

21.01.2019, 21:36
|
|
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами:
4480376
Репутация:
183
|
|
@CleanLegend буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.
|
|
|

24.01.2019, 21:21
|
|
Постоянный
Регистрация: 17.02.2014
Сообщений: 611
С нами:
6438231
Репутация:
133
|
|
Сообщение от DonHomka
@CleanLegend буфер для ответа всего 1024 байт. Можешь сделать динамическую строку под ответ? У меня не получается.
Ты не понимаешь что ты хочешь сам ,по этому и не получается.
|
|
|

24.01.2019, 21:27
|
|
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами:
4480376
Репутация:
183
|
|
Сообщение от iAmerican
Ты не понимаешь что ты хочешь сам ,по этому и не получается.
Я понимаю что хочу. И с этим мне фип помог. Не умничай не по делу.
|
|
|

27.01.2019, 01:06
|
|
Новичок
Регистрация: 26.01.2019
Сообщений: 2
С нами:
3840167
Репутация:
51
|
|
Сообщение от 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
;
}
Точно, в класс. А проще всего?
|
|
|

27.01.2019, 01:51
|
|
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами:
4480376
Репутация:
183
|
|
Сообщение от sqlaer.
Точно, в класс. А проще всего?
а проще юзать функи фипа, она читают весь док
|
|
|

27.01.2019, 01:52
|
|
Новичок
Регистрация: 26.01.2019
Сообщений: 2
С нами:
3840167
Репутация:
51
|
|
Сообщение от DonHomka
а проще юзать функи фипа, она читают весь док
Я не занимаюсь сайтами, а особенно запросами. Не для меня.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|