php怎么写服务端获取 客户端发来的json 我客户端是用 libcurl 库的 用http 给服务端发出请求的 不是用socket的 PHP应该怎么写才能收到请求 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你先file_put_contents('test.txt', 'get:' . print_r($_GET, 1) . 'post:' . print_r($_POST, 1));看看 test.txt 中哪段有内容 如果使用的是HTTP协议的GET方法,数据保存在$_GET数组中.如果使用的是HTTP协议的POST方法,数据通常保存在$_POST数组中.注:如果post方法没有指出数据类型,提交的数据可以通过$HTTP_RAW_POST_DATA获取.找到数据后可以通过json_decode函数处理下即可转换成数组或对象. 直接输出print_r($_POST);ECHO "111";pint_r($_GET); print_r($_POST, 1) 我直接打这个什么都没看到 奇怪 我客户端就是发的是字符串 你直接 print_r($_POST) 给谁看?给客户端?那你客户端有显示回传数据的代码吗?所以我让你 print_r($_POST, 1) 到文件,这样才好检查呀 get:Array()post:Array()我收到的是这个哈 还是什么都没有..蛋疼 get:Array()post:Array()我收到的是这个哈 还是什么都没有..蛋疼 再file_put_contents('test.txt', file_get_contents('php://input'));看看 确定 是不是解码问题的 我客户端是用c++ libcurl post发的 确定 是不是解码问题的 我客户端是用c++ libcurl post发的 #include "HHttp.h"#include "json.h"//导入curl头文件#include "../libs/cocos2dx/platform/third_party/ios/curl/curl.h"bool HHttp::pServer(){ //------------------------ CURL *curl; // 初始化 CURL 结构 CURLcode res; res = curl_global_init(CURL_GLOBAL_ALL);//初始化所有的可能的调用。 if (res != CURLE_OK) { printf( "Failed to global init default [%d]\n", res ); return false; } // curl = curl_easy_init();// Json::FastWriter writer;// Json::Value root;// root["action"] = "device";// std::string json_file=writer.write(root); if (curl) { std::string cc; curl_easy_setopt( curl, CURLOPT_URL, "http://127.0.0.1/ceshi/ceshi.php"); //请求的地址 curl_easy_setopt(curl, CURLOPT_POST, true); //启用POST提交 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "account=zhycheng"); //发送的数据 curl_easy_setopt( curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data); //处理的函数 curl_easy_setopt( curl, CURLOPT_WRITEDATA, &cc); //缓冲的内存 res = curl_easy_perform(curl);// post if(res != CURLE_OK){ if (CURLE_OPERATION_TIMEDOUT == res) //连接失败 超时 { CCMessageBox("请重新尝试请求!", "网络连接超时"); CCLog("网络超时:错误信息:%s\n",curl_easy_strerror(res)); return 0; } CCMessageBox("请重新尝试请求!", "网络连接超时"); CCLog("raw_send_recv : 启动 CURL 失败,错误信息:%s\n",curl_easy_strerror(res)); return 0; } CCLog("~Send Data Done~~"); //清理 curl 结构,释放资源等 curl_easy_cleanup(curl); } else { CCLog("raw_send_recv : 初始化 CURL 失败 \n"); return 0; } return true;}int allLength;//总流长度std::vector<uint8_t*> allData;//总数据//服务器有数据返回的时候就会调用这个函数size_t HHttp::write_data(uint8_t *dataPtr, size_t size, size_t nmemb, void *stream) { int len = size * nmemb; if(len!=1440){ CCLog("收到服务器数据,返回的数据长度 : %i",allLength); }else{ allLength+=len; allData.push_back(dataPtr); } size_t sizes = size * nmemb; return sizes;} 你这样写对吗?一般这么写 // 初始化libcurl CURLcode return_code; return_code = curl_global_init(CURL_GLOBAL_WIN32); if (CURLE_OK != return_code) return 0; CURL *curl_handle; CURLcode res; curl_handle = curl_easy_init(); curl_easy_setopt(curl_handle, CURLOPT_URL, url); ....你虽有CURL *curl;但没有curl = curl_easy_init();那 if (curl) 分支能进去吗? 百度空间curl发文章失败,大牛出来下好吗 遇到一个让人哭笑不得的问题,虽小可是让人琢磨不透!!! 我有几个积压很久的问题,我想问问怎么做,最好给个代码。。 PHP 记录集中全部记录转成数组的问题 求数字组合算法 PHP输出时间问题 请求PHP两个小问题 在线等 这问题不解决没法睡觉啊,大虾一定帮忙!!! 关于PHP调用证书的方法? 关于session的过期问题 为什么没找到id 请问PHP中的PHP_EOL为什么没有效果?
file_put_contents('test.txt', 'get:' . print_r($_GET, 1) . 'post:' . print_r($_POST, 1));
看看 test.txt 中哪段有内容
如果使用的是HTTP协议的POST方法,数据通常保存在$_POST数组中.
注:如果post方法没有指出数据类型,提交的数据可以通过$HTTP_RAW_POST_DATA获取.找到数据后可以通过json_decode函数处理下即可转换成数组或对象.
print_r($_POST);ECHO "111";
pint_r($_GET);
print_r($_POST, 1) 我直接打这个什么都没看到 奇怪 我客户端就是发的是字符串
那你客户端有显示回传数据的代码吗?所以我让你 print_r($_POST, 1) 到文件,这样才好检查呀
(
)
post:Array
(
)
我收到的是这个哈 还是什么都没有..蛋疼
(
)
post:Array
(
)
我收到的是这个哈 还是什么都没有..蛋疼
file_put_contents('test.txt', file_get_contents('php://input'));
看看
#include "HHttp.h"
#include "json.h"
//导入curl头文件
#include "../libs/cocos2dx/platform/third_party/ios/curl/curl.h"bool HHttp::pServer(){
//------------------------
CURL *curl; // 初始化 CURL 结构
CURLcode res;
res = curl_global_init(CURL_GLOBAL_ALL);//初始化所有的可能的调用。
if (res != CURLE_OK)
{
printf( "Failed to global init default [%d]\n", res );
return false;
}
// curl = curl_easy_init();
// Json::FastWriter writer;
// Json::Value root;
// root["action"] = "device";
// std::string json_file=writer.write(root);
if (curl)
{ std::string cc;
curl_easy_setopt( curl, CURLOPT_URL, "http://127.0.0.1/ceshi/ceshi.php"); //请求的地址
curl_easy_setopt(curl, CURLOPT_POST, true); //启用POST提交
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "account=zhycheng"); //发送的数据
curl_easy_setopt( curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write_data); //处理的函数
curl_easy_setopt( curl, CURLOPT_WRITEDATA, &cc); //缓冲的内存
res = curl_easy_perform(curl);// post
if(res != CURLE_OK){
if (CURLE_OPERATION_TIMEDOUT == res) //连接失败 超时
{
CCMessageBox("请重新尝试请求!", "网络连接超时");
CCLog("网络超时:错误信息:%s\n",curl_easy_strerror(res));
return 0;
}
CCMessageBox("请重新尝试请求!", "网络连接超时");
CCLog("raw_send_recv : 启动 CURL 失败,错误信息:%s\n",curl_easy_strerror(res));
return 0;
}
CCLog("~Send Data Done~~");
//清理 curl 结构,释放资源等
curl_easy_cleanup(curl);
} else {
CCLog("raw_send_recv : 初始化 CURL 失败 \n");
return 0;
}
return true;
}
int allLength;//总流长度
std::vector<uint8_t*> allData;//总数据//服务器有数据返回的时候就会调用这个函数
size_t HHttp::write_data(uint8_t *dataPtr, size_t size, size_t nmemb, void *stream) {
int len = size * nmemb;
if(len!=1440){
CCLog("收到服务器数据,返回的数据长度 : %i",allLength);
}else{
allLength+=len;
allData.push_back(dataPtr);
}
size_t sizes = size * nmemb;
return sizes;
}
一般这么写
// 初始化libcurl
CURLcode return_code;
return_code = curl_global_init(CURL_GLOBAL_WIN32);
if (CURLE_OK != return_code)
return 0;
CURL *curl_handle;
CURLcode res;
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_URL, url);
....
你虽有
CURL *curl;
但没有
curl = curl_easy_init();
那 if (curl) 分支能进去吗?