windows下 C++ 发送HTTP请求

#include <winsock2.h>
#include <windows.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main (){
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
        cout << "WSAStartup failed.\n";
        system("pause");
        return 1;
    }
    SOCKET Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    struct hostent *host;
    host = gethostbyname("www.google.com");
    SOCKADDR_IN SockAddr;
    SockAddr.sin_port=htons(80);
    SockAddr.sin_family=AF_INET;
    SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
    cout << "Connecting...\n";
    if(connect(Socket,(SOCKADDR*)(&SockAddr),sizeof(SockAddr)) != 0){
        cout << "Could not connect";
        system("pause");
        return 1;
    }
    cout << "Connected.\n";
    send(Socket,"GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n"),0);
    char buffer[10000];
    int nDataLength;
    while ((nDataLength = recv(Socket,buffer,10000,0)) > 0){        
        int i = 0;
        while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
            cout << buffer[i];
            i += 1;
        }
    }
    closesocket(Socket);
        WSACleanup();
    system("pause");
    return 0;
}

 

转自: http://stackoverflow.com/questions/1011339/how-do-you-make-a-http-request-with-c

转载于:https://www.cnblogs.com/moher/archive/2013/01/31/2887067.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是两种C++实现发送HTTP请求的例子: 1. 使用WinINet库发送HTTP请求 ```cpp #include <windows.h> #include <wininet.h> void urlopen(_TCHAR* url) { HINTERNET hSession = InternetOpen(L"HTTP Example", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); if (hSession != NULL) { HINTERNET hConnect = InternetOpenUrl(hSession, url, NULL, 0, INTERNET_FLAG_RELOAD, 0); if (hConnect != NULL) { char buffer[MAXSIZE]; DWORD bytesRead; while (InternetReadFile(hConnect, buffer, sizeof(buffer), &bytesRead) && bytesRead > 0) { // 处理接收到的数据 } InternetCloseHandle(hConnect); } InternetCloseHandle(hSession); } } int main() { _TCHAR* url = L"http://coderzh.cnblogs.com"; urlopen(url); return 0; } ``` 2. 使用WinHTTP发送HTTP请求 ```cpp #include <windows.h> #include <winhttp.h> void urlopen(_TCHAR* url) { HINTERNET hSession = WinHttpOpen(L"HTTP Example", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if (hSession != NULL) { HINTERNET hConnect = WinHttpOpenRequest(hSession, L"GET", url, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0); if (hConnect != NULL) { if (WinHttpSendRequest(hConnect, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0)) { if (WinHttpReceiveResponse(hConnect, NULL)) { char buffer[MAXSIZE]; DWORD bytesRead; while (WinInternetReadFile(hConnect, buffer, sizeof(buffer), &bytesRead) && bytesRead > 0) { // 处理接收到的数据 } } } WinHttpCloseHandle(hConnect); } WinHttpCloseHandle(hSession); } } int main() { _TCHAR* url = L"http://coderzh.cnblogs.com"; urlopen(url); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值