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

解决方案 »

  1.   

    你先
    file_put_contents('test.txt', 'get:' . print_r($_GET, 1) . 'post:' . print_r($_POST, 1));
    看看 test.txt 中哪段有内容
      

  2.   

    如果使用的是HTTP协议的GET方法,数据保存在$_GET数组中.
    如果使用的是HTTP协议的POST方法,数据通常保存在$_POST数组中.
    注:如果post方法没有指出数据类型,提交的数据可以通过$HTTP_RAW_POST_DATA获取.找到数据后可以通过json_decode函数处理下即可转换成数组或对象.
      

  3.   

    直接输出
    print_r($_POST);ECHO "111";
    pint_r($_GET);
      

  4.   


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

  5.   

    你直接 print_r($_POST) 给谁看?给客户端?
    那你客户端有显示回传数据的代码吗?所以我让你 print_r($_POST, 1) 到文件,这样才好检查呀
      

  6.   

    get:Array
    (
    )
    post:Array
    (
    )
    我收到的是这个哈 还是什么都没有..蛋疼
      

  7.   

    get:Array
    (
    )
    post:Array
    (
    )
    我收到的是这个哈 还是什么都没有..蛋疼
      

  8.   


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

  9.   

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

  10.   

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

  11.   


    #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;
    }
      

  12.   

    你这样写对吗?
    一般这么写
        // 初始化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) 分支能进去吗?