C++使用http请求,亲测可用,VS2008编译运行通过

[cpp] view plain copy

  1. int CMyFunctionsDlg::request(char* hostname, char* api, char* parameters)
  2. {
  3. WSADATA WsaData;
  4. WSAStartup(0x0101, &WsaData);
  5. //初始化socket
  6. struct hostent* host_addr = gethostbyname(hostname);
  7. if (host_addr == NULL)
  8. {
  9. //      cout<<"Unable to locate host"<<endl;
  10. return -103;
  11. }
  12. sockaddr_in sin;
  13. sin.sin_family = AF_INET;
  14. sin.sin_port = htons((unsigned short)80);
  15. sin.sin_addr.s_addr = *((int*)*host_addr->h_addr_list);
  16. int sock = socket(AF_INET, SOCK_STREAM, 0);
  17. if (sock == -1)
  18. {
  19. return -100;
  20. }
  21. //建立连接
  22. if (connect(sock, (const struct sockaddr *)&sin, sizeof(sockaddr_in) ) == -1)
  23. {
  24. //        cout<<"connect failed"<<endl;
  25. return -101;
  26. }
  27. //初始化发送信息
  28. char send_str[2048] = {0};
  29. //头信息
  30. strcat(send_str, "POST ");
  31. strcat(send_str, api);
  32. strcat(send_str, " HTTP/1.1\r\n");
  33. strcat(send_str, "Host: ");
  34. strcat(send_str, hostname);
  35. strcat(send_str, "\r\n");
  36. strcat(send_str, "Connection: keep-alive\r\n");
  37. char content_header[100];
  38. sprintf(content_header,"Content-Length: %d\r\n", strlen(parameters));
  39. strcat(send_str, content_header);
  40. strcat(send_str, "Cache-Control: max-age=0\r\n");
  41. strcat(send_str, "Origin: http://www.hao123.com\r\n");
  42. strcat(send_str, "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/15.0.849.0 Safari/535.1\r\n");
  43. strcat(send_str, "Content-Type: application/x-www-form-urlencoded\r\n");
  44. strcat(send_str, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
  45. strcat(send_str, "Referer: http://www.hao123.com/\r\n");
  46. strcat(send_str, "Accept-Encoding: gzip,deflate,sdch\r\n");
  47. strcat(send_str, "Accept-Language: zh-CN,zh;q=0.8\r\n");
  48. //  strcat(send_str, "Expect: 100-continue\r\n");
  49. //内容信息
  50. strcat(send_str, "\r\n");
  51. strcat(send_str, parameters);
  52. if (send(sock, send_str, strlen(send_str),0) == -1)
  53. {
  54. //        cout<<"send failed"<<endl;
  55. return -101;
  56. }
  57. //获取返回信息
  58. char recv_str[4096] = {0};
  59. if (recv(sock, recv_str, sizeof(recv_str), 0) == -1)
  60. {
  61. //        cout<<"recv failed"<<endl;
  62. return -101;
  63. }
  64. //    cout<<recv_str<<endl;
  65. WSACleanup( );
  66. return 0;
  67. }

request("www.xxxx.com", "http://www.xxxx.com/client/data.php", "{\"request\":\"userLogin\",\"posts\":[{\"loginName\":\"123456\",\"password\":\"7890\"}]}");

http://blog.csdn.net/dingxz105090/article/details/41285149

时间: 2024-12-24 07:14:50

C++使用http请求,亲测可用,VS2008编译运行通过的相关文章

Https发送POST请求[亲测可用]

1.直接建一个工具类放入即可 /** * 发送https请求共用体 */ public static JSONObject sendPost(String url,String parame,Map<String,Object> pmap) throws IOException, KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException{ // 请求结果 JSONObject json = new JSO

Apache+Php配置(亲测可用)

引言: 在软件项目中,Maven提供了一体化的类库管理系统,非常实用.但是,如果新增的类库jar在网络上无法获取到,如何在本地按照Maven的规则添加进来呢?本文将通过一个小例子展示新增过程. 背景介绍: 一个Maven管理的Java项目,提供一个系统级别的POM.xml,其中定义了整个项目使用的类库. 需求: 需要添加一个自定义的类库到当前项目中.假定当前的类库文件名为:abc.jar.. 如何将类库添加进来? 1.  找到当前Maven的Repository类库位置 一般默认情况下,在win

C#读取Excel设置(亲测可用)

OpenFileDialog openFD = new OpenFileDialog(); openFD.FileName = ""; openFD.Filter = "xls|*.xls|xlsx|*.xlsx"; openFD.Title = "选择更新文件"; openFD.Multiselect = false; if (openFD.ShowDialog() == DialogResult.OK) { this.tbSelectFile

sqlite 删除表中重复数据(亲测可用)

例子:表名  Paper .通过字段PaperID查找重复数据. 1 --查询某表中重复的数据       select * from Paper group by PaperID having count(*)>1; 2--删除重复行数,只剩不重复的记录(rowid为sqlite自带字段)      delete from Paper where Paper.rowid not in (select MAX(Paper.rowid) from Paper group by PaperID);

VCL下最好的皮肤控件AlphaControls 9.05 完美支持XE6 亲测可用

在传统的vcl编程中,因自带的控件效果太过普通,为了更好的用户体验和视觉效果往往会使用第三方的一些皮肤控件,这样的皮肤控件百度上一搜一大把,但往往不了解自己不使用过直接下载下来也是没有用的,因为这要涉及到控件版本 ID工具版本 操作系统 等多方因素配合使用,只有实际测试使用过才可定性. 本文提供的一款控件是经过实际测试过的 测试环境:Windows7 32位 ,Delphi xe6, AlphaControls 9.05 下载链接:http://binstyle.7958.com/down_18

MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions -(亲测可用)

MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions - See more at: http://www.codegood.com/archives/129#sthash.dc3d3aib.dpuf http://www.codegood.com/archives/129 http://www.codegood.com/archives/4 MySQL-python 1.2.3 for Windows an

eclipse设置快捷键sysout+Alt+/后出System.out.println!亲测可用!

以前一直用myeclipse,没有这方面的顾虑,现在换到了eclipse,很多要自己设置了,比如很多快捷键. 最常用的,运行到sysout ,eclipse总是不自动补全,很是恼火!!! 现在终于找到了可用的办法,解决方案如下: 需要重新设置快捷键. 按快捷键ctrl+shirt+L,然后在按一下L.设置快捷键的对话框就出来了,然你将Word Completion移除,在将Content Assist 这个设置为alt+/.就可以了. 希望对你有帮助!!! 本人个人网站:灵异事件 www.lie

Sublime Text3注册码,亲测可用

将以下复制在输入框即可 ,亲测可用 . 不过还是希望大家多多支持正版 . -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 94D7F7D4 95BC8C1C 527DA828 560BB037 D1EDDD8C AE7B379F 50C9D69D B35179EF 2FE898C4

CSS响应式:根据分辨路加载不同CSS的几个方法,亲测可用

有时候你需要把同一个页面在手机和pc同时打开,其中有一个办法就是判断不同分辨路加载不同的css 小编总结了几种分别加载css的方法: 1.比较复杂的使用js判断加载不同css (亲测可用) 但是这种方法只有最开始的时候会判断,如果你拖动浏览器大小是不会发生改变的(当然如果喜欢拖着玩的话) 1 <link rel="stylesheet" type="text/css" id="links" href="../css/m_wuqin

is 32-bit instead of 64-bit 亲测可用

亲测可用 来源:https://stackoverflow.com/questions/27186243/use-32-bit-jni-libraries-on-64-bit-android 解决方法: 1.将以下内容添加到"build.gradle"defaultConfig中:添加 ndk {abiFilters"armeabi","armeabi-v7a","x86","mips"} 2.将andro