質問

以前のPostリクエストからGetリクエストに切り替えようとしました。 Getを想定していますが、最終的には投稿を行います。

PHPで次のことを試しました:

curl_setopt($curl_handle, CURLOPT_POSTFIELDS, null);
curl_setopt($curl_handle, CURLOPT_POST, FALSE);
curl_setopt($curl_handle, CURLOPT_HTTPGET, TRUE);

不足しているものは何ですか?

追加情報: POSTリクエストを実行するように設定された接続が既にあります。それは正常に完了しますが、後で接続を再利用して、上記のsetoptsを使用してGETに戻ると、不完全なPOSTヘッダーで内部的にPOSTを実行します。問題は、GETを実行していると考えているが、content-lengthパラメーターなしでPOSTヘッダーを置くことになり、接続が411エラーで失敗することです。

役に立ちましたか?

解決 3

解決済み:問題はここにあります:

_CUSTOMREQUEST _POST の両方を介して POST を設定し、 _CUSTOMREQUEST POST _POST _HTTPGET に切り替えられたときにcode>サーバーは、 _CUSTOMREQUEST のヘッダーが正しいヘッダーであると想定し、411を返しました。

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST');

他のヒント

GETリクエストを行うときは、URLの最後にクエリ文字列を入れていることを確認してください。

$qry_str = "?x=10&y=20";
$ch = curl_init();

// Set query data here with the URL
curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php' . $qry_str); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
$content = trim(curl_exec($ch));
curl_close($ch);
print $content;
With a POST you pass the data via the CURLOPT_POSTFIELDS option instead 
of passing it in the CURLOPT__URL.
-------------------------------------------------------------------------

$qry_str = "x=10&y=20";
curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php');  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);

// Set request method to POST
curl_setopt($ch, CURLOPT_POST, 1);

// Set query data here with CURLOPT_POSTFIELDS
curl_setopt($ch, CURLOPT_POSTFIELDS, $qry_str);

$content = trim(curl_exec($ch));
curl_close($ch);
print $content;

CURLOPT_HTTPGET curl_setopt()ドキュメントからのメモ>(強調を追加):

  

[CURLOPT_HTTPGETに等しく設定] TRUE reset HTTPリクエストメソッドをGETに。
  GETがデフォルトであるため、これは要求メソッドが変更された場合にのみ必要です。

curl_exec($ curl_handle)を呼び出す前にこれを追加します

curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'GET');

CURLリクエストはデフォルトでGETです。GETCURLリクエストを行うためにオプションを設定する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top