Xcode如何请求网络并从网络上获得资源

来源:互联网 发布:微群控营销软件 编辑:程序博客网 时间:2024/06/03 23:41

首先,需要添加cocos中的 curl文件,添加方式跟添加资源一样,当然这个是.h文件

cocos2d/external/curl/include/mac/curl  // 引入资源文件

#include "curl.h"  // 需要引入这个文件


//数据接收方法

// 这里的stream不能是String定义的,似乎cocos自带的String并没有append函数

size_t MyServerTest::proData(char *ptr ,size_t size , size_t num_Mem ,std::string* str){

    if(str ==NULL)

        return 0;

    size_t s;

    s = size*num_Mem;

    // 在这里把 ptr的前s个字符赋值给 stream,应该就是下面的receive

    str->append(ptr,s);

    return s;

}


void MyServerTest::menuCallBack(){

    // 创建一个curl对象

    CURL* curl =curl_easy_init();

    int res;

    std::string receive;

    char url[30] ="192.168.0.107/helpGame.jpg"; // 这个url 是我电脑  资源库/webserver/document内的图片

    res = curl_easy_setopt( curl ,CURLOPT_URL , url );

    // 这里的功能函数返回的事宜个 size_t类型的数据,传入的应该是个指针,所以加上了取地址符

    curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION , &MyServerTest::proData);

    // 这里的receive也是取的地址,似乎cocos里数据类型都是传得指针

    curl_easy_setopt(curl,CURLOPT_WRITEDATA , &receive);

    res = curl_easy_perform(curl); // 表演的时候,也就是呼叫网络

    if(CURLE_OK == res){

        CCLOG("网络连接成功");

        CCLOG("%s",receive.c_str());

        auto img =new Image();     // 定义一个img对象

        img->autorelease();   //  生成该对象

        unsignedchar* data = (unsignedchar *)receive.c_str();    // 将从网络返回的数据转化成无符号类型的char*数据

        img->initWithImageData(data, receive.length());       //  载入图片资源,应该是在这里把网络返回的数据流转化的。

        auto texture =TextureCache::getInstance()->addImage(img,"helpGame.jpg");

        auto sp =Sprite::createWithTexture(texture);

        sp->setPosition(320,480);

        this->addChild(sp);

        

    }

    curl_easy_cleanup(curl);

}

1 0
原创粉丝点击