Cocos2d—X游戏开发之LibCurl高级篇(get,post服务器数据)(网络详细参数信息)
2013-08-07 14:45
645 查看
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
相关文章推荐
- 表单中多个请求参数名字相同,服务器到底获取的是哪个请求参数的值,表单的action和get和post提交方式的关系以及提交数据的不同点
- iOS开发网络—11发送json数据给服务器以及多值参数
- 网络请求数据 get请求方式 post请求 协议异步连接服务器 block异步连接服务器
- iOS多线程与网络开发之使用POST上传JSON数据 & 多值参数
- 手动get post请求网络(面向http协议向服务器提交数据)
- Android网络数据之向服务器提交数据的三种方式(get+post+AsyncHttpClient)
- nodejs 开发网络游戏服务器时常会出现异常数据的总结
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- 向指定 URL 发送GET,POST方法的请求(传入指定url和参数,服务器返回字符串数据)
- Unity游戏开发之“Post/Get提交数据”
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- 数据服务器android中用GET和POST的方法向服务器上传数据
- IOS开发之Post 方式获取服务器数据
- lua在web开发中获取GET或POST参数
- jquery之利用ajax与服务器交谈(发起GET和POST请求之利用jquery获取数据)
- ios开发网络学习:一:NSURLConnection发送GET,POST请求
- iOS开发-post请求向服务器发送json格式数据(数组或字典)
- 用firebug查看网页get和post等详细信息
- swift开发网络篇—利用NSURLSession 发送GET和POST请求
- Android开发之网络通信(HttpURLConnection,HttpClient,HttpGet,HttpPost)