C++ 与 php 的交互 之----- C++ 获取 网页文字内容,获取 php 的 echo 值。
转载请声明出处!
http://www.cnblogs.com/linguanh/category/633252.html
距离上次 谈 C++ 制作json 或者其他数据传送给 服务器,时隔两个多月。
链接:http://www.cnblogs.com/linguanh/p/4340119.html
这次是从服务器上 中获取 文字内容到控制台,或者写入本地文本等操作,废话不多说,开讲。
-----------------------------------------------------------分割线-------------------------------------------------------------
测试服务器是: 新浪云 sea;
测试内容:获取 由 php 脚步从服务器中 读取出来的 数据,我这里是 微信用户的openID;
工具:VS 2012;
先上直观的图片,后上文本源码
总体例子
核心函数
对于多字节wchar 到 lpcswtr 的转化函数介绍,请转到 该链接
http://www.cnblogs.com/linguanh/p/4241939.html
1 #include <iostream> 2 #include <fstream> 3 #include <Windows.h> 4 #include <wininet.h> 5 #define MAXBLOCKSIZE 28+1 // openID 固定长 28 6 #pragma comment(lib,"wininet.lib") //引入动态库 7 8 char* getWeiXinFromUserNameFromSEA(const char*); 9 using namespace std; 10 11 int main(){ 12 char *p=NULL; //用于存放返回结果 13 p=getWeiXinFromUserNameFromSEA("http://913337456-my.stor.sinaapp.com/xxx.txt"); 14 15 cout<<p; 16 return 0 ; 17 } 18 19 //我这里设置了函数 带有 返回值,大家可以不适用返回值! 20 char* getWeiXinFromUserNameFromSEA(const char *Url){ 21 char *str = new char[MAXBLOCKSIZE]; // 用于最后返回的结果,动态分配 22 const char *x="From_AF"; int i = 0;//第一个是打开标记,i是下面的转化控制变量 23 WCHAR exchange_text_from_url[256],exchange_text_from_x[256]; 24 LPCWSTR py = exchange_text_from_url;// url 转 lpcwstr 的中间变量 25 LPCWSTR pz = exchange_text_from_x; //另外的信息 26 //unicode编码 下的 设置,我这里使用了宽字节,免去转换的麻烦 27 MultiByteToWideChar( 0, 0,x, -1,exchange_text_from_x, 64 );//WCHAR to LPCWSTR,转化 28 MultiByteToWideChar( 0, 0,Url, -1, exchange_text_from_url, 256 ); 29 //结束转化 30 HINTERNET handle_for_init_internet = InternetOpen("From_AF", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 31 if (handle_for_init_internet != NULL){ 32 HINTERNET handle_for_read_info = InternetOpenUrl(handle_for_init_internet, Url, NULL,NULL,NULL,NULL); 33 if (handle_for_read_info != NULL){ 34 char result[MAXBLOCKSIZE]; //用于保存 缓冲区的数据组合 35 char buffer[MAXBLOCKSIZE];//下载文件的缓冲区 36 DWORD bytes_read = 1;//下载的字节数 37 BOOL temp_boolean; 38 while(bytes_read!=0){ 39 //使用 InternetReadFile 从缓存区 读取 数据到 buffer 字符串,要度的字节数是 buffer的有效长度,控制是 bytes_read 40 temp_boolean = InternetReadFile(handle_for_read_info,buffer,sizeof(buffer), &bytes_read); 41 } 42 for(i;i<MAXBLOCKSIZE-1;i++){ 43 if(i==MAXBLOCKSIZE-2 && buffer[i]=='0'){ //去掉最后的干扰值 0 44 45 }else if(buffer[i]>=34 && buffer[i]<=126){ //多种测试,最终还是使用 ASCII 码范围判断来解决了 烫烫烫~~~~ 46 //cout<<buffer[i]; //通过使用循环 针对性地 输出单个 字符消除缓冲区的其他混杂 空量 47 //这里不直接搞出 buffer 是因为,缓存区里有很多 不知什么数据在输出的时候会变成很多烫,一般是空才会有烫 48 result[i]=buffer[i]; //经过测试,这个逐个赋值能够去掉 其中夹杂的 烫~~~ 49 } 50 } 51 result[i]='\0'; //赋值 结尾 符,防止 自身爆 烫 52 strcpy(str,result); //copy 给 字符串指针,用于返回 53 //安全操作,销毁句柄 54 InternetCloseHandle(handle_for_read_info); handle_for_read_info = NULL; 55 } 56 InternetCloseHandle(handle_for_init_internet); handle_for_init_internet = NULL; 57 return str; 58 } 59 }
我的“区块链”技术书籍:《区块链以太坊DApp开发实战》
、
支付宝收款码 https://www.cnblogs.com/linguanh/gallery/825997.html
微信:https://www.cnblogs.com/linguanh/gallery/image/321906.html
银行卡:6217007200076746554 , 林冠宏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?