ホームページ >バックエンド開発 >PHPチュートリアル >クライアントから送信されたJSONを取得するためのPHPサーバーの記述方法

クライアントから送信されたJSONを取得するためのPHPサーバーの記述方法

WBOY
WBOYオリジナル
2016-06-23 14:22:111099ブラウズ

私のクライアントは libcurl ライブラリを使用し、ソケットではなく http を使用してサーバーにリクエストを送信します。


ディスカッションに返信する (解決策)

まずは
file_put_contents('test. txt' , 'get:' . print_r($_GET, 1) . print_r($_POST, 1));
HTTP の 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("グローバル init デフォルト [%d]n に失敗しました", res);
return false;

//curl =curl_easy_init()
// Json: :FastWriter ライター;
// Json::Value root;
// root["action"] = "device"
// std::string json_file=writer.write(root);

std::string cc;
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/ceshi/ceshi.php"); //要求されたアドレス
curl_easy_setopt(curl, CUR LOPT_POST, true);投稿を投稿
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "account=zhycheng"); //送信データ
curl_easy_setopt( curl, CURLOPT_FOLLOWLOCATION, 1L); (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("再試行してくださいrequest!", "ネットワーク接続がタイムアウトしました ");
CCLog("raw_send_recv : CURL の開始に失敗しました、エラー メッセージ: %sn",curl_easy_strerror(res) ; cclog(「DONE ~~」)。 :vector 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("受信したサーバーデータ、返された size * nmemb; のデータ長


このように書かれていますか?
一般的には次のように記述されます
// libcurl を初期化します
CURLcode return_code;
return_code =curl_global_init(CURL_GLOBAL_WIN32)
if (CURLE_OK != return_code)
を通じてthrough through through through through off ‐ ‐ ‐ ‐ ‐‐ ‐

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)
を通じてthrough through through through through off ‐ ‐ ‐ ‐ ‐‐ ‐
curl_easy_setopt(curl_handle, CURLOPT_URL, url);
CURL *curl; はありますが、
curl =curl_easy_init(); はできます。 if (curl) 分岐を入力しますか?

コードは実行され、接続は成功しました...どうすればよいですか

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。