のコンテンツ タイプで PHP curl を使用して生の JSON を送信するにはどうすればよいapplication/x-www-form-urlencoded
ですか?
説明させてください:
私は、HTTP POSTリクエストを受け入れる Web サーバーと通信しています。この Web サーバーは、JSON オブジェクトをリクエストの本文として使用します。通常、HTTP クエリ パラメータの表示に慣れています。
私の状況では、次の content-type でリクエストを送信する必要があります
コンテンツ タイプ: application/x-www-form-urlencoded
本文は未加工の JSON である必要があります。
したがって、多くの可能性があります。私は次のことを試しました:
<?php
$server_url = "http://server.com";
$curl = curl_init($server_url);
$data_array = array("a"=> "a_val", "b" => array("c"=>"c_val", "d"=>"d_val") );
$options = array(
CURLOPT_POST => TRUE,
CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded'),
CURLOPT_POSTFIELDS => json_encode($data_array),
CURLOPT_COOKIEJAR => realpath('tmp/cookie.txt'),
CURLOPT_COOKIEFILE => realpath('tmp/cookie.txt')
);
curl_setopt_array($curl, $options);
$return = curl_exec($curl);
var_dump($return);
curl_close($curl);
?>
私もエスケープしようとしましたjson_encode()
:
...
CURLOPT_POSTFIELDS => "\"" . json_encode($data_array) . "\"" ,
...
サーバーがhtmlパラメーターを解析できた場合、私はこれを行うことができました:
...
CURLOPT_POSTFIELDS => http_build_query($data_array)
...
ただし、そうではなく、回避策が必要です。
content-type を変更しても機能しないことに注意してください。を使用してみtext/plain
ましたが、サーバーはそれを受け入れませんでした。