JSRUN 用代码说话

网络通信之http

编辑教程

网络通信之http

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);
    }
}
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟