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::vector
//服务器有数据返回的时候就会调用这个函数
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) 分支能进去吗?
代码确实运行了哈 连接成功了哈..... 我应该怎么办

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

Laravel的服务容器和服务提供商是其架构的基础。 本文探讨了服务容器,详细信息服务提供商创建,注册,并通过示例演示了实际用法。 我们将从OVE开始
