Cocos2d—X游戏开发之LibCurl高级篇(get,post服务器数据)(网络详细参数信息)

Curl的官方网站 —— http://curl.haxx.se

note:lincurl在C++中使用,回调函数必须是静态函数

1.get方法

首先,写2个函数,一个是请求函数,一个回调函数

    void requestServerPrizeListFromServer();
    static size_t writtenJsonData(void *ptr, size_t size ,size_t nmemb, void *userData);

然后,为了在在缓存中读取数据,设置一个静态成员变量,以方便在静态回调函数中调用。

public:
    
    static string returnData;

string HelloWorld::returnData = "";

最后,在.cpp文件中实现方法的实现。

void HelloWorld::requestServerPrizeListFromServer()
{
    string serverIP = "www.google.com";
    CURL *easyHandle;
    easyHandle = curl_easy_init();
    if (easyHandle) {
        curl_easy_setopt(easyHandle, CURLOPT_URL, serverIP.c_str());
        curl_easy_setopt(easyHandle, CURLOPT_VERBOSE, 1L);
        curl_easy_setopt(easyHandle, CURLOPT_WRITEFUNCTION, HelloWorld::writtenJsonData);
    }
    curl_easy_perform(easyHandle);
    curl_easy_cleanup(easyHandle);
}

size_t HelloWorld::writtenJsonData(void *ptr, size_t size, size_t nmemb, void *userData)
{
    //1.不存本地,缓存存取
    /*string temp = (char*)ptr;
    returnData += temp;
    
    CCLog("returnData: %s",returnData.c_str());
    return size * nmemb ;*/
    
    //2.存本地
    CCLog("(char*)ptr: %s",(char*)ptr);
    string path = CCFileUtils::sharedFileUtils()->getWritablePath()+"test.txt";
    FILE *fp = fopen(path.c_str(), "a+");
    int written = fwrite(ptr, size, nmemb, fp);
    fclose(fp);
    
    return written;
    
}


2.post方法

post方法只是比get方法多2条代码,分别是post数据和参数设置。

string postData = "name=kevin&passWord=12345";

curl_easy_setopt(easyHandle, CURLOPT_POSTFIELDS, postData.c_str());


3.网络详细参数信息


很多时候我们需要查看网络详细的参数设置,在curl之中,只要添加一行代码,就可以获取控制台打印的详细信息。

curl_easy_setopt(easyHandle1, CURLOPT_VERBOSE, 1L);


//ip地址和端口号
* About to connect() to 192.168.1.5 port 80 (#0)
//开始连接
*   Trying 192.168.1.5...
* connected
* Connected to 192.168.1.5 (192.168.1.5) port 80 (#0)
//ip地址后的方法参数
> GET /jforum?module=shoot&action=load HTTP/1.1
//host address
Host: 192.168.1.5
//读取本地的cookie文件
Accept: *
Cookie: jforumUserHash=7b96d4832d66aca47a9e9d11fff1de69; jforumAutoLogin=1; jforumUserId=305; JSESSIONID=09D0FE46A767973E1A1EF89B1D771693.jvm1

//返回状态码200 和ok
< HTTP/1.1 200 OK
* Replaced cookie JSESSIONID="7E0D21DF09402CE07494F8BE33895459.jvm1" for domain 192.168.1.5, path /, expire 0
< Set-Cookie: JSESSIONID=7E0D21DF09402CE07494F8BE33895459.jvm1; Path=/
//utf8编码,文本或者静态网页
< Content-Type: text/html;charset=UTF-8
< Transfer-Encoding: chunked
//时间戳
< Date: Sat, 10 Aug 2013 02:44:43 GMT
//服务器架构
< Server: Apache-Coyote/1.1
<
//打印返回信息
Cocos2d: Network:jsonDataLoad: {"er":0,"zs":0,"fb":2090,"un":"Player_65315","dh":13700,"infoTime":600,"id":305}
0


* Connection #0 to host 192.168.1.5 left intact
//关闭连接
* Closing connection #0








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值