1

変数や配列を設定せずにデータを投稿しようとしています。それが可能かどうかわかりませんか?$ data = array('var_name' =>'var_val')を送信すると、すべてが正常に機能しますが、$ data ='to send'を設定すると、投稿データが取得されません。

$ data='送信するサンプルデータ';

    $ch = curl_init($url);                                                                      
    curl_setopt($ch, CURLOPT_POST, true);

    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    //curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/json'));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                        

    $resp = curl_exec($ch);
4

3 に答える 3

0

マニュアルから:

CURLOPT_POSTFIELDS

HTTP「POST」操作で投稿する完全なデータ。ファイルを投稿するには、ファイル名の前に@を付け、フルパスを使用します。ファイルタイプは、ファイル名の後に''の形式のタイプを付けることで明示的に指定できます;type=mimetype。このパラメーターは、のようなurlencoded文字列'para1=val1&para2=val2&...'として、またはフィールド名をキーとして、フィールドデータを値として持つ配列として渡すことができます。値が配列の場合、Content-Typeヘッダーはに設定されmultipart/form-dataます。PHP 5.2.0以降、ファイルが@プレフィックスを付けてこのオプションに渡される場合、値は配列である必要があります。

単純な文字列は、もう一方の端でキーと値のペアであると見なされます。もう一方の端が何であれ、渡したキーなしの値は表示されません。これがPOSTではなくGETの場合は、クエリ文字列を調べるだけです。そうではないので、代わりにキーと値を使用してデータを送信するか、もう一方の端が生のPOSTデータを読み取る方法を理解する必要があります。もう一方の端がPHPの場合、これを行うには少なくとも2つの方法があります。

于 2012-11-29T08:25:45.067 に答える
0

POST リクエストには、必ずしも のペアが含まれているとは限りませんvariable = value。生データが含まれている場合もあります。それにアクセスするには$HTTP_RAW_POST_DATA、その場合、生の POST データで埋められる変数を使用する必要があります。

于 2012-11-29T20:03:06.173 に答える
0

その理由は、「送信する」が $_POST データのキーになるためです。それを見ることができるようにするには、$url である PHP ファイルで var_dump($_POST); を実行します。これにより、出力にそのキー値が表示されます。しかし、ご想像のとおり、それには何の価値もありません。

POSTFIELDS に書き込んだデータを raw として取得できます

$yourPostedData = file_get_contents('php://input');
于 2012-11-29T08:23:28.187 に答える