C++ Socket 发送 http post请求
来源:互联网 发布:淘宝数据分析表 编辑:程序博客网 时间:2024/06/05 07:39
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <winsock.h>//dont forget to add wsock32.lib to linker dependencies
#pragma comment(lib,"wsock32.lib")
using namespace std;
#define BUFFERSIZE 1024 * 2
void die_with_error(char *errorMessage);
void die_with_wserror(char *errorMessage);
int main(int argc, char *argv[])
{
string request;
string response;
int resp_leng;
char buffer[BUFFERSIZE];
struct sockaddr_in serveraddr;
int sock;
WSADATA wsaData;
char* addr = "http://lordrobert.iask.in/notify?action=recharge_notify";
char *host = "192.126.91.153";
int port = 80;
char *pHttpPost = "POST %s HTTP/1.1\r\n"
"Host: %s:%d\r\n"
"Content-Type: text/plain\r\n"
"Content-Length: %d\r\n\r\n"
"%s";
//Post 参数,参数形式要看服务端如何接收。不一定是下面这样写。
char *msg = "{\"openid\": \"oG6_5wZTEUmVYF__n7TMgO1yWxFw\", \"RoomName\": \"万达201\",\"TradeNO\": \"20160718025309674\",\"balanceMoney\": 50,\"MonneyCount\": 5,\"Time\": \"20160718025309\",\"TradeType\": 1,\"return_code\":\"SUCCESS\"}";
//char* msg = "Inputs={\"WeiChartID\":\"oG6_5wZTEUmVYF__n7TMgO1yWxFw\"}";
char strHttpPost[1024] = { 0 };
sprintf_s(strHttpPost, pHttpPost, addr, host, port, strlen(msg), msg);
/*
request += "GET /test.html HTTP/1.0\r\n";
request += "Host: www.zedwood.com\r\n";
request += "\r\n";
*/
//init winsock
if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
{
die_with_wserror("WSAStartup() failed");
printf("WSAStartup failed:%d", GetLastError());
}
//open socket
if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
die_with_wserror("socket() failed");
//connect
memset(&serveraddr, 0, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(host);
serveraddr.sin_port = htons((unsigned short)port);
if (connect(sock, (struct sockaddr *) &serveraddr, sizeof(serveraddr)) < 0)
die_with_wserror("connect() failed");
//send request
//send(sockClient, strHttpPost, strlen(strHttpPost), 0);
int a = send(sock, strHttpPost, strlen(strHttpPost), 0);
/*
if (send(sock, strHttpPost, strlen(strHttpPost), 0) != request.length())
die_with_wserror("send() sent a different number of bytes than expected");
if (send(sock, request.c_str(), request.length(), 0) != request.length())
die_with_wserror("send() sent a different number of bytes than expected");
*/
//get response
response = "";
resp_leng = BUFFERSIZE;
while (resp_leng == BUFFERSIZE)
{
resp_leng = recv(sock, (char*)&buffer, BUFFERSIZE, 0);
if (resp_leng > 0)
response += string(buffer).substr(0, resp_leng);
//note: download lag is not handled in this code
}
//display response
cout << response << endl;
//disconnect
closesocket(sock);
//cleanup
WSACleanup();
return 0;
}
void die_with_error(char *errorMessage)
{
cerr << errorMessage << endl;
exit(1);
}
void die_with_wserror(char *errorMessage)
{
cerr << errorMessage << ": " << WSAGetLastError() << endl;
exit(1);
}
#include <windows.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <winsock.h>//dont forget to add wsock32.lib to linker dependencies
#pragma comment(lib,"wsock32.lib")
using namespace std;
#define BUFFERSIZE 1024 * 2
void die_with_error(char *errorMessage);
void die_with_wserror(char *errorMessage);
int main(int argc, char *argv[])
{
string request;
string response;
int resp_leng;
char buffer[BUFFERSIZE];
struct sockaddr_in serveraddr;
int sock;
WSADATA wsaData;
char* addr = "http://lordrobert.iask.in/notify?action=recharge_notify";
char *host = "192.126.91.153";
int port = 80;
char *pHttpPost = "POST %s HTTP/1.1\r\n"
"Host: %s:%d\r\n"
"Content-Type: text/plain\r\n"
"Content-Length: %d\r\n\r\n"
"%s";
//Post 参数,参数形式要看服务端如何接收。不一定是下面这样写。
char *msg = "{\"openid\": \"oG6_5wZTEUmVYF__n7TMgO1yWxFw\", \"RoomName\": \"万达201\",\"TradeNO\": \"20160718025309674\",\"balanceMoney\": 50,\"MonneyCount\": 5,\"Time\": \"20160718025309\",\"TradeType\": 1,\"return_code\":\"SUCCESS\"}";
//char* msg = "Inputs={\"WeiChartID\":\"oG6_5wZTEUmVYF__n7TMgO1yWxFw\"}";
char strHttpPost[1024] = { 0 };
sprintf_s(strHttpPost, pHttpPost, addr, host, port, strlen(msg), msg);
/*
request += "GET /test.html HTTP/1.0\r\n";
request += "Host: www.zedwood.com\r\n";
request += "\r\n";
*/
//init winsock
if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
{
die_with_wserror("WSAStartup() failed");
printf("WSAStartup failed:%d", GetLastError());
}
//open socket
if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
die_with_wserror("socket() failed");
//connect
memset(&serveraddr, 0, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(host);
serveraddr.sin_port = htons((unsigned short)port);
if (connect(sock, (struct sockaddr *) &serveraddr, sizeof(serveraddr)) < 0)
die_with_wserror("connect() failed");
//send request
//send(sockClient, strHttpPost, strlen(strHttpPost), 0);
int a = send(sock, strHttpPost, strlen(strHttpPost), 0);
/*
if (send(sock, strHttpPost, strlen(strHttpPost), 0) != request.length())
die_with_wserror("send() sent a different number of bytes than expected");
if (send(sock, request.c_str(), request.length(), 0) != request.length())
die_with_wserror("send() sent a different number of bytes than expected");
*/
//get response
response = "";
resp_leng = BUFFERSIZE;
while (resp_leng == BUFFERSIZE)
{
resp_leng = recv(sock, (char*)&buffer, BUFFERSIZE, 0);
if (resp_leng > 0)
response += string(buffer).substr(0, resp_leng);
//note: download lag is not handled in this code
}
//display response
cout << response << endl;
//disconnect
closesocket(sock);
//cleanup
WSACleanup();
return 0;
}
void die_with_error(char *errorMessage)
{
cerr << errorMessage << endl;
exit(1);
}
void die_with_wserror(char *errorMessage)
{
cerr << errorMessage << ": " << WSAGetLastError() << endl;
exit(1);
}
0 0
- c socket 发送http请求
- C socket 发送HTTP请求
- 使用socket发送http请求(GET/POST)
- 使用socket发送http请求(GET/POST)
- 使用socket发送http请求(GET/POST)
- C++ Socket 发送 http post请求
- c socket 发送http请求 (一)
- http 发送post请求
- socket编程---实现get post 向http发送请求
- PHP Socket实现HTTP GET POST请求发送
- socket 发送http请求
- socket发送http请求
- socket 发送http请求
- C++ socket发送POST请求
- Http post请求发送示例
- python 发送http post请求
- vc 发送http请求POST
- Http post 请求发送 xml
- Java基本语法-----java常量
- 一个操作系统的实现--freedos中edit问题
- 《转》【笔记1】关于联想g470更换intel5300网卡的问题
- poj Dropping tests
- 《转》【笔记2】关于Linux 802.11n csi tool的安装注意事项
- C++ Socket 发送 http post请求
- HDOJ-----5053立方和公式
- 解决httpclient超时设置不生效的问题
- EXTJS4.0.7开发积累(6)
- 内容提供器 Content Provider (一)
- JTree的用法实践
- python mvc框架django搭建项目
- 《转》【笔记3】获取csi文件,并用MATLAB处理
- 漫谈处理器体系结构