C++ socket发送POST请求
来源:互联网 发布:ubuntu下安装tar.gz 编辑:程序博客网 时间:2024/06/06 12:59
// httpPost.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdio.h"#include <time.h>#include <WinSock2.h>#include <cstringt.h>#pragma comment(lib, "Ws2_32.lib")char* SendHttpRequest(char* weburl, char* url , char* detectorId ,char* JsonData);int main(int argc, char* argv[]){ char* JsonData = "[{\"a\":\"b\"}]"; char weburl[] = "www.test.com:8081"; char* url = "/post"; char* Id = "aaa"; char* re = SendHttpRequest(weburl,url, Id, JsonData); printf("%s\r\n",re); system("pause"); return 0;}char* SendHttpRequest(char* weburl, char* url , char* detectorId ,char* JsonData){ time_t rawtime; struct tm * timeinfo; time_t t = time ( &rawtime ); long timestamp = t; char *pHttpPost = "POST %s/%s/%ld HTTP/1.1\r\n" "Content-Type: application/json\r\n" "Content-Length: %d\r\n" "Host:%s\r\n" "Connection: Keep-Alive\r\n" "User-Agent: Apache-HttpClient/4.5.3 (Java/1.7.0_75)\r\n" "Expect: 100-continue\r\n" "Accept-Encoding: gzip,deflate\r\n" "\r\n%s"; char strHttpPost[10240] = {0}; sprintf(strHttpPost, pHttpPost,url,detectorId, timestamp,strlen(JsonData),weburl,JsonData); char* p = ":"; char* web = strtok(weburl,p); int port = 80; char* ptr; if((ptr = strtok(NULL,p))) { port = atoi(ptr); } WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if( err != 0) { return false; } if( LOBYTE(wsaData.wVersion) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return false; } SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); HOSTENT* thisHost; char* sIp = NULL; thisHost = gethostbyname(web); sIp = inet_ntoa(*(struct in_addr*)*thisHost->h_addr_list); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr(sIp);//本机地址,服务器在本机开启 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(port);// 设置端口号 char* content = NULL; int a = connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//连接服务器 if(a == 0) { send(sockClient, strHttpPost, strlen(strHttpPost), 0); char recvBuf[1024]; while(true) { int r = recv(sockClient,recvBuf,1024,0);//接受数据 if(r > 0) { char* p = strstr(recvBuf,"HTTP/1.1 200"); if(p != NULL) { char* ptr = strstr(recvBuf,"\r\n\r\n"); if(ptr != NULL) { char* p_start = strtok(ptr,"{"); if(p_start != NULL) { char* p = strtok(NULL,"{"); if(p != NULL) content = strtok(p,"}"); } } closesocket(sockClient);//关闭连接 return content; } p = strstr(recvBuf,"HTTP/1.1 400"); if(p != NULL) { break; } } } closesocket(sockClient);//关闭连接 } return content; }
阅读全文
0 0
- C++ socket发送POST请求
- c++libcur发送post请求
- 使用socket发送http请求(GET/POST)
- 使用socket发送http请求(GET/POST)
- 使用Socket发送GET/POST请求
- 使用socket发送http请求(GET/POST)
- C++ Socket 发送 http post请求
- [php]模拟socket发送GET,POST请求
- c socket 发送http请求
- C socket 发送HTTP请求
- c socket 发送http请求 (一)
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- [Socket]利用Jatarka下HttpClient发送(Get && Post)请求
- [Socket]利用Android下的HttpClient发送GET && POST请求
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- 虚拟化与Docker
- rabbitmq基础
- TensorFlow 记录
- 97. Interleaving String
- 42. Trapping Rain Water
- C++ socket发送POST请求
- 小白的jsp学习笔记二
- 形参是实参的引用
- centos gnome 取消屏幕保护自动锁屏功能
- XML学习07-Schema约束
- 挂号系统(android)之初诊和复诊信息录入
- Android购物车
- SFTP中创建文件目录,上传文件(*)
- Go编写计数排序