ホームページ >バックエンド開発 >PHPチュートリアル >クライアントから送信されたJSONを取得するためのPHPサーバーの記述方法
私のクライアントは libcurl ライブラリを使用し、ソケットではなく http を使用してサーバーにリクエストを送信します。
まずは
file_put_contents('test. txt' , 'get:' . print_r($_GET, 1) . print_r($_POST, 1));
HTTP の GET を使用している場合
HTTP プロトコルの POST メソッドが使用される場合、データは $_POST 配列に保存されます。
データを見つけた後、json_decode 関数で処理し、配列またはオブジェクトに変換できます
直接出力
print_r($_POST);ECHO "111";
まずは
file_put_contents( 'test.txt', 'get:' . print_r($_GET, 1) . 'post:' . print_r($_POST, 1)); test.txt の段落には内容があります
print_r($_POST , 1) これを入力しただけですが、何も表示されませんでした。 。 。奇妙なことに、私のクライアントは文字列を送信するだけです
それを表示するために直接 print_r($_POST) できる人は誰ですか?クライアントに?
それでは、クライアントは返されたデータを表示するコードを持っていますか?
get:Array
(
)
(
)
これを受け取ったか何も受け取っていません ..痛い
誰に直接 print_r($_POST) できるでしょうか?クライアントに?
それでは、クライアントは返されたデータを表示するコードを持っていますか?
get:Array
(
)
post:Array
(
)
これを受け取ったか、何も受け取っていませんでした。痛いです。
もう一度
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
//この関数はサーバーがデータを返すときに呼び出されます
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 *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) 分岐を入力しますか?
コードは実行され、接続は成功しました...どうすればよいですか