JSON の受信に関する問題

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

CURL を使用して JSON を送信する方法を学びました。
しかし、メンバーがログイン情報を送信した後、インターフェースはデータを返します。00 が返されれば成功です。 11 が返される場合、ログインが失敗したことを意味します。

ログイン情報を正常に記録し、他の Web サイトにジャンプします。午後はずっと失敗してしまいました。例を挙げてください

ありがとうございます


ディスカッションへの返信 (解決策)

送信されたサーバー側:
if (ログイン成功) {
echo('00')
}else{//Failed
; echo( '11');

あなたのプログラム:
$ch =curl_init();
$url="サービスサーバーのアドレスとパラメータを送信";
curl_setopt( $ch, CURLOPT_RETURNTRANSFER,1);
$a=curl_exec($ch);
if($a=='00'){
}elseif($ a==) '11'){
ログイン失敗
}

大体こんな感じです

送信されたサーバー側:
if (ログイン成功){
echo('00'); }else{///Failed

echo('11');

}

あなたの側のプログラム:
$ch =curl_init();
$url="サービスサーバーのアドレスとパラメータを送信します"; CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
if($a=='00'){
成功code;
}elseif($a=='11'){
ログインに失敗しました
}

皆さんが思っている通りかどうかは分かりませんが、おおよそこんな感じです

2つのパラメータAとBを受け取ります。 00 はログインが成功したことを意味します。B の URL を取得してジャンプします。別のURLに直接ジャンプすることはできますか?

$arrayData = array("name" => "Hagrid", "age" => "36");$sendJsonData = json_encode($arrayData);$ch = curl_init('http://127.0.0.1/jietu/test.php');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, $sendJsonData);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array(		'Content-Type: application/json',		'Content-Length: ' . strlen($sendJsonData)));$ret = curl_exec($ch);if($ret == '00'){  成功了执行的代码;}elseif($ret == '11'){  登录失败}


$arrayData = array("name" => "Hagrid", "age" => "36");$sendJsonData = json_encode($arrayData);$ch = curl_init('http://127.0.0.1/jietu/test.php');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, $sendJsonData);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array(		'Content-Type: application/json',		'Content-Length: ' . strlen($sendJsonData)));$ret = curl_exec($ch);if($ret == '00'){  成功了执行的代码;}elseif($ret == '11'){  登录失败}


これはもともとこのように書かれていましたが、ログインに失敗しました
{"aa":"00","bb":"http://www.xxx.com/index"}
時間がかかりました書くのに時間がかかります。 aa が取得できないか、bb が取得できないかのどちらかです。 aa=00 の場合のみログインが成功します。これを調べてみました

var_dump($ret =curl_exec($ch)); 値を出力して参照してください

var_dump($ret =curl_exec($ch)); 値を出力して参照してください

boolean false

データは成功しましたが、戻り値は {"aa":"00","bb":"http://www.xxx.com/index"} です。

json_decode

と同じです。モデレーターは、はい、戻り値を変換するには json_decode を使用します

json_decode

さらに混乱しました。 。 。例を挙げてもらえますか?

データをインターフェースに正常に送信できたので、この {"aa":"00","bb":"http://www.xxx.com/index"} を取得する方法を説明します。

簡単に説明しましょう。わかりやすい。 。 。これで、データの投稿が成功しました。戻り値は {"aa":"00","bb です。 " :"http://www.xxx.com/index"}入手方法は?

$json_str = '{"aa":"00","bb":"http://www.xxx.com/ index"} ';

$arr = json_decode($json_str);

print_r($arr);

$ret =curl_exec($ch)
echo $ret; を実行すると、{"aa":"00" が得られます。 "bb": "http://www.xxx.com/index"}
は、実際に json 文字列を受信したことを意味します
ということは、

うわー

すでに json を使用しているのに、なぜ json 関連の関数さえ知らないのですか?

$ret =curl_exec($ch)
echo $ret; を実行すると、 {"aa":"00","bb":"http://www.xxx.com/index"} が得られます
は実際にあなたを意味します受け取りました json文字列にたどり着きました
では、

$t = json_decode($ret);print_r($t);/*stdClass Object(    [aa] => 00    [bb] => http://www.xxx.com/index)*/$t = json_decode($ret, 1);print_r($t);/*Array(    [aa] => 00    [bb] => http://www.xxx.com/index)*/

既にjsonを使っているのに、なぜjson関連の関数も知らないのですか?

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