一 cocos2dx 之 简单的客户端与服务端的http通信

来源:互联网 发布:网络犯罪的例子 编辑:程序博客网 时间:2024/06/05 15:59

          1 服务端设置。  这里我用的iis,阿里云的服务器。首先,用远程桌面连接阿里云的服务器,然后找到iis管理器,添加角色,由于只是测试而已,就直接用网站服务器就ok。

根据提示安装web所需要的环境。然后,就可以在自己的服务器上建立一个站点,建站点的时候注意,如果没有自己的域名,主机名就不用写了,我们只是以端口号来区分我们的站点,最后点击网站绑定到计算机上的文件夹,在文件夹内创建一个html,或者php,甚至是txt的文件,文件里随便写些内容就好了。然后再网站的属性里,添加默认文档为创建的文件名。这样,一个网站就建好了,当客户端链接这个站点的时候,我们会把网站下的文件里的内容返回给客户端。

        2 客户端就比较简单了。直接 贴代码:

bool HelloWorld::init()

{

    //////////////////////////////

    // 1. super init first

    if ( !Layer::init() )

    {

        returnfalse;

    }


    Node *n=CSLoader::createNode("MainScene.csb");

    addChild(n);

    ui::Button *bt=(ui::Button *)seekNodeByName(n,"Button_1");

    bt->addClickEventListener(CC_CALLBACK_0(HelloWorld::httprequst,this,bt));


    returntrue;

}

void HelloWorld::httprequst(cocos2d::CCObject *sender)

{

    HttpRequest* request =new HttpRequest();//创建request对象,这里new出来的对象不能使用autorelease(),原因后述

    request->setUrl("你的网站地址");//设置url

    request->setRequestType(HttpRequest::Type::GET);//设置请求方式

    request->setResponseCallback(this,callfuncND_selector(::HelloWorld::onHttpRequestCompleted));//这是回调对象和回调函数

    request->setTag("GET test1");//设置用户标识,可以通过response获取

    HttpClient::getInstance()->send(request);//使用CCHttpClient共享实例来发送request

    request->release();//调用release()

}

void HelloWorld::onHttpRequestCompleted(cocos2d::CCNode *sender,void *data)

{

    HttpResponse *response = (HttpResponse*)data;

    

    if (!response)

    {

        return;

    }

    

    // 获取对应request的字符串标识

    if (0 !=strlen(response->getHttpRequest()->getTag()))

    {

        CCLog("%s completed", response->getHttpRequest()->getTag());

    }

    //获取返回代码,比如200404

    int statusCode = response->getResponseCode();

    char statusString[64] = {};

    sprintf(statusString,"HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());

    CCLog("response code: %d", statusCode);

    

    if (!response->isSucceed())

    {

        CCLog("response failed");

        CCLog("error buffer: %s", response->getErrorBuffer());//可以调用getErrorBuffer()来获取错误原因

        return;

    }

    

    // dump data

    std::vector<char> *buffer = response->getResponseData();//用来获取接收到的数据

    printf("Http Test, dump data: ");

    for (unsignedint i = 0; i < buffer->size(); i++)

    {

        printf("%c", (*buffer)[i]);

    }

    printf("\n");

}

这样就可以收到服务端返回的信息,也就是网站下的文本的内容。发个截图,是我自己返回的内容:


0 0
原创粉丝点击