Тема: POST, GET запроси
Народ, допоможіть плз... Потрібний приклад POST і GET запросів без використання додаткових бібліотек... А ще, якщо хтось знає, то завантаження коду сайту (html) в блокнот (*.txt)...
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → POST, GET запроси
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Народ, допоможіть плз... Потрібний приклад POST і GET запросів без використання додаткових бібліотек... А ще, якщо хтось знає, то завантаження коду сайту (html) в блокнот (*.txt)...
Я гуглив, але більшість кодів використовують додаткові бібліотеки...
Якщо комусь треба:
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
SOCKET xopen(const char* address, unsigned short port);
int xwrite(SOCKET sock, const char* src, int size);
int xread(SOCKET sock, char* dst, int size);
int main(void) {
// HTTP - запрос для получения страницы текущей темы этого форума
char* http = "GET [url]http://www.w3.org/2008/09/msnws/papers/trustprivacy.html [/url] HTTP/1.0\r\n"\
"Host: www.w3.org\r\n\r\n";
int res;
SOCKET sock;
FILE* fp;
char buf[4096]; // буфера приёма данных 4-KB
WSADATA data;
if(WSAStartup(MAKEWORD(2, 0), &data) != 0)
exit(1);
sock = xopen("www.w3.org", 80); // соединение с сервером
if(sock == NULL)
exit(2);
puts("Connection server...");
// посылаем HTTP-запрос серверу
if(xwrite(sock, http, strlen(http)))
puts("Start upload data...");
else
goto error;
Sleep(1000u);
// создаём файл для записи страницы
fp = fopen("E:\\tmp.html", "w+");
// читаем страницу по 4-KB
while((res = xread(sock, buf, sizeof(buf))) > 0) {
buf[res] = '\0';
fwrite(buf, sizeof(char), strlen(buf), fp);
}
fflush(fp);
fclose(fp);
puts("Finish uploaden file.");
error:
closesocket(sock);
WSACleanup();
getchar();
return 0;
}
// функция по установке соединения с сервером
SOCKET xopen(const char* address, unsigned short port) {
SOCKET sock;
sockaddr_in addr;
hostent* host = NULL;
memset(&addr, 0, sizeof(sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
host = gethostbyname(address);
if(host == NULL)
return NULL;
memcpy(&addr.sin_addr, host->h_addr_list[0], host->h_length);
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sock == INVALID_SOCKET)
return NULL;
if(connect(sock, (sockaddr*)&addr, sizeof(sockaddr_in)) == SOCKET_ERROR )
return NULL;
return sock;
}
// посылка данных серверу
int xwrite(SOCKET sock, const char* src, int size) {
return (send(sock, src, size, NULL) == SOCKET_ERROR) ? 0 : 1;
}
// чтения данных с сервера
int xread(SOCKET sock, char* dst, int size) {
int res = recv(sock, dst, size, NULL);
if(res == SOCKET_ERROR)
return -1;
return res;
}
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися