• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

网络通信之http

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

CrossApp为我们封装了http的网络框架,其文件在CrossApp引擎包的\extensions\network文件下的 HttpClient、HttpRequest 、HttpResponse。

进行一次http交互,需要涉及的有三个类:

HttpRequest 用来描述一个请求。

HttpResponse 用来描述对应请求的响应。

HttpClient是一个单例模式的类,它的职责就是负责将收到的HttpRequest对象push到发送队列中,并发送一个信号量驱动工作线程工作,工作线程再将收到的数据封装成一个HttpResponse对象push接收队列,并启用调度来派送数据。


引用头文件:

#include "CrossAppExt.h"

请求

/**
编译到Android平台之后注意添加联网权限
**/
//创建request对象,这里new出来的对象不能使用autorelease(),原因后述  
CAHttpRequest* request = new CAHttpRequest();
 
//设置URL
request->setUrl("www.9maio.com");
 
//设置请求类型kHttpGet、kHttpPost、KHttpPostFile、kHttpPut、kHttpDelete、kHttpUnkown
request->setRequestType(CAHttpRequest::kHttpGet);
 
//这是回调对象和回调函数  
request->setResponseCallback(this, httpresponse_selector(FirstViewController::requestresult));
 
//使用CCHttpClient共享实例来发送request
CAHttpClient::getInstance()->send(request);
 
//调用release() 
request->release();

接收

void FirstViewController::requestresult(CAHttpClient* clinet, CAHttpResponse* response)
{
    if (!response->isSucceed())
    {
        return;
    }
    //获取返回代码,比如200、404等
    int statusCode = response->getResponseCode();
    if (statusCode == 200)
    {
        std::string responseRes = "";
        std::vector<char> *buffer = response->getResponseData();
        for (unsigned int i = 0; i < buffer->size(); i++)
        {
            responseRes += (*buffer)[i];
        }
        //查找字符“官方特约”
        string::size_type idx = responseRes.find(UTF8("官方特约"));
        if (idx == -1)
        {
            //为找到字符
            CCLog(" Not Found");
            return;
        }
        string temp = responseRes.substr(idx, 30);
        string num = temp.substr(temp.find(UTF8(":")) + 3, temp.find("<") - temp.find(UTF8(":")) - 3);
        CCLog("temp:%s",temp.c_str());
    }
    else
    {
        //打印返回代码
        CCLog("statusCode:%d", statusCode);
    }
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
http请求网络图发布时间:2022-02-02
下一篇:
xml解析发布时间:2022-02-02
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap