zoukankan      html  css  js  c++  java
  • 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]=''; //赋值 结尾 符,防止 自身爆 烫
    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 }
  • 相关阅读:
    基于XMPP的即时通信系统的建立 — XMPP IQ详解
    XMPPManager 解析
    Xcode 工程文件“.xcodeproj”文件夹解析
    Description &&debugDescription && runtime(debug模式下调试model)
    day04作业
    数字、字符串、列表、字典,jieba库,wordcloud词云
    if,for,异常,random模块,计算圆周率
    day03
    day02
    计算机基础
  • 原文地址:https://www.cnblogs.com/linguanh/p/4543836.html
Copyright © 2011-2022 走看看