2011-07-13 24 views
0

PHPでCURLを使用して、AJAX POSTを使用してデータを取得するWebサイトの操作を模倣したいと考えています。PHPとJSONを使用したcURL

通常、Firebugを使用してPOSTリクエストを表示しているときは、変数と値のペアが表示されますが、この場合、表示されるのは1つのJSON文字列だけです。例えば。

{"refId":"14536"} 

CURLを使用してこのリクエストを模倣する方法はありますか?私はCURLを見てきましたが、CURLOPT_POSTFIELDSパラメータは1つ以上の名前/値で構成されるクエリ文字列でなければなりません。

ここには、1つの名前と値のペアを使用した通常のPOST要求のテストコードがあります。私は上記を行うためにそれを変更したいと思います。

$curlOptions = array(
    CURLOPT_RETURNTRANSFER => true,  // return web page 
    CURLOPT_HEADER   => false, // don't return headers 
    CURLOPT_ENCODING  => "",  // handle all encodings 
    CURLOPT_USERAGENT  => "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3", 
    CURLOPT_CONNECTTIMEOUT => 600,  // timeout on connect 
    CURLOPT_TIMEOUT  => 600,  // timeout on response 
    CURLOPT_POST   => true, 
    CURLOPT_POSTFIELDS  => 'var1=113', 
    CURLOPT_URL   => "http://localhost/t4.php" 
); 

$curlCh  = curl_init(); 
curl_setopt_array($curlCh, $curlOptions); 
$fileContents = curl_exec($curlCh); 
$curlErr  = curl_errno($curlCh); 
$curlErrmsg = curl_error($curlCh); 

if($curlErr) echo "CURL ERROR:</b> $curlErr $curlErrmsg"; 
echo $fileContents; //check worked 
curl_close($curlCh); 
+1

あなたはすでにロードページ内から非同期にこれをやろうとしていますか? *文字通りajaxを模倣することを意味する場合は、クライアントサイドの対話を作成するためにJavascript AJAXを使用する必要があります。サーバーサイドスクリプトは、ページを更新せずにオンデマンドDOM要素をスワップすることはできません。 – DeaconDesperado

+0

@DeaconDesperado。いいえ、CURLにAJAXと同じデータを返すようにしたいだけです。 – spiderplant0

答えて

1

どのようなものについて:

$postData = json_encode(array('refId' => '14536')); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
+0

jsonでこのキー値のペアを作成するには、構文json_encode(array( 'refId' => '14536))を使用する必要があります。これは、2つの別々の配列項目ではなく、連想関係を設定します。 – DeaconDesperado

+0

彼の例は、 "{" refId "、" 14536 "}"です。これはキーと値のペアではなく、辞書の2つの別々のエントリです。 – sagi

+0

@sagi、@DeaconDesperado。私の間違い。私は{"refId": "14536"}と言っていました。私は質問を更新しました。 – spiderplant0

関連する問題