php获取客户发的json,php怎么写服务端获取客户端发来的json

我客户端是用 libcurl 库的 用http 给服务端发出请求的 不是用socket的 PHP应该怎么写才能收到请求

回复讨论(解决方案)

你先

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);

你先

file_put_contents('test.txt', 'get:' . print_r($_GET, 1) . 'post:' . print_r($_POST, 1));

看看 test.txt 中哪段有内容

print_r($_POST, 1) 我直接打这个什么都没看到。。。 奇怪 我客户端就是发的是字符串

你直接 print_r($_POST) 给谁看?给客户端?

那你客户端有显示回传数据的代码吗?

所以我让你 print_r($_POST, 1) 到文件,这样才好检查呀

get:Array

(

)

post:Array

(

)

我收到的是这个哈 还是什么都没有..蛋疼

你直接 print_r($_POST) 给谁看?给客户端?

那你客户端有显示回传数据的代码吗?

所以我让你 print_r($_POST, 1) 到文件,这样才好检查呀

get:Array

(

)

post:Array

(

)

我收到的是这个哈 还是什么都没有..蛋疼

file_put_contents('test.txt', file_get_contents('php://input'));

看看

进来学习的,抱歉,没帮到忙

file_put_contents('test.txt', file_get_contents('php://input'));

看看

什么都没有了..

你能确定客户端发了数据吗?

确定 是不是解码问题的 我客户端是用c++ libcurl post发的

你能确定客户端发了数据吗? 确定 是不是解码问题的 我客户端是用c++ libcurl post发的

你都没有收到数据,何来的解码?

有可能的话,请贴出 C++ 的代码片段

有可能的话,请贴出 C++ 的代码片段

#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::vectorallData;//总数据

//服务器有数据返回的时候就会调用这个函数

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) 分支能进去吗?

你这样写对吗?

一般这么写

// 初始化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) 分支能进去吗?

代码确实运行了哈 连接成功了哈..... 我应该怎么办

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值