C++ 与 php 的交互 之----- C++ 获取 网页文字内容,获取 php 的 echo 值。

简介: 转载请声明出处! http://www.cnblogs.com/linguanh/category/633252.html       距离上次 谈 C++ 制作json 或者其他数据传送给 服务器,时隔两个多月。

转载请声明出处!

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 }

 

如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力


img_12e3f54d4d0f70f0eb14f20548e3d781.png
目录
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
22天前
|
存储 SQL 关系型数据库
PHP与数据库交互:从基础到进阶
【10月更文挑战第9天】在编程的世界里,数据是流动的血液,而数据库则是存储这些珍贵资源的心脏。PHP作为一门流行的服务器端脚本语言,其与数据库的交互能力至关重要。本文将带你从PHP与数据库的基本连接开始,逐步深入到复杂查询的编写和优化,以及如何使用PHP处理数据库结果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技巧,让你在PHP和数据库交互的道路上更加从容不迫。
|
2月前
|
存储 PHP 开发者
深入浅出PHP:构建你的首个动态网页
【9月更文挑战第24天】在数字时代的今天,掌握编程技能不再是专业技术人员的专利。PHP作为一种流行的服务端脚本语言,因其易学性和灵活性而广受欢迎。本文将引导您从零开始,通过一个简单实例—创建个人博客页面,逐步深入PHP的世界。我们将一起探索变量、循环和函数等基本概念,并最终将这些元素融合到实际的代码中。不论你是编程新手还是希望扩展知识的开发者,这篇文章都将为你提供一次愉快的学习旅程。
38 0
|
3月前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。
|
2天前
|
自然语言处理 关系型数据库 MySQL
PHP编程入门:构建你的第一个网页应用
【10月更文挑战第29天】本文旨在引导初学者步入PHP编程的世界,通过深入浅出的方式介绍PHP的基础知识,并指导读者如何动手实践,搭建一个简单的网页应用。文章不仅涉及PHP代码的编写,还包括了环境配置、项目结构设计以及前后端交互的基本概念。适合对Web开发感兴趣且希望快速入门的朋友阅读。
7 0
|
2月前
|
存储 关系型数据库 PHP
深入浅出PHP:构建动态网页的基石
在数字时代的浪潮中,PHP作为一门强大的服务器端脚本语言,为无数网站的建设和开发提供了动力。本文将通过浅显易懂的方式,引导初学者理解PHP的核心概念,掌握基础语法,并介绍如何利用PHP进行数据库交互和处理表单数据,最终实现一个简单动态网页的搭建。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你开启PHP世界的大门。
|
3月前
|
SQL 关系型数据库 MySQL
PHP与数据库交互的艺术:深入探讨PDO扩展
【8月更文挑战第28天】在数字信息时代的海洋里,PHP作为一艘灵活的帆船,承载着无数网站和应用的梦想。而PDO扩展,则是这艘帆船上不可或缺的导航仪,指引着数据安全与效率的航向。本文将带你领略PHP与数据库交互的艺术,深入浅出地探索PDO的世界,从连接数据库到执行复杂的查询,每一步都清晰可见。我们将一起航行在这段奇妙的旅程上,解锁数据的奥秘,体验编程的乐趣。
43 1
|
3月前
|
编译器 PHP 开发者
PHP 7新特性深度解析与实践深入浅出PHP:构建你的第一个动态网页
【8月更文挑战第27天】本文将深入探讨PHP 7的新特性,包括性能提升、语法改进等,并通过代码示例展示如何在实际项目中应用这些新特性。同时,我们还将讨论如何优化现有项目以充分利用PHP 7的优势。让我们一起探索PHP 7的世界,提升开发效率和项目质量!
|
3月前
|
搜索推荐 关系型数据库 MySQL
PHP编程入门与实战:构建你的第一个动态网页
【8月更文挑战第24天】本文将引导初学者进入PHP编程的世界,从基础概念到实践操作,一步步展示如何使用PHP创建一个简单的动态网页。文章不仅介绍PHP的安装、语法和常用功能,还通过一个实际案例演示如何应用这些知识。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你打开一扇通往Web开发的大门。
|
3月前
|
存储 缓存 自然语言处理