0

この質問は、ここで取り上げる問題とほぼ同じです。

http://curl.haxx.se/mail/lib-2010-08/0118.html

ポイントは、一部の Web サービスでは (不便なことに) 空の HTTP ヘッダー値を POST する必要があるということです。したがって、たとえば、POST に次の HTTP ヘッダーを必要とする RESTful API があるとします。

Content-Type: text/json
Content-Length: 1024
...
Custome-Header-Field: hello
Required-Empty-Header-Field:
...
Connection: Keep-Alive

ここでのポイントは、Required-Empty-H​​eader-Fieldを指定する必要があり、空でなければならないということです。

PHPコンテキスト内でcurl_execでこれを行うにはどうすればよいですか?

これを理解するのに時間がかかったので、私は自分の質問に答えるつもりです。しかし、他のプログラマーの意見を知りたいです。

4

2 に答える 2

1
// Assume we are POSTing data from the variable $data.
$http_header = array(
  "Content-Type: application/x-www-form-urlencoded" . "\r\n" .
  "Content-Length: ". strlen($data) . "\r\n" .
  ...
  "Custome-Header-Field: hello" . "\r\n" .
  "Required-Empty-Header-Field:" . "\r\n" .
  ...
  "Connection: Keep-Alive",
  "Other-Value-One: world",
  "Other-Value-Two: thisworks");

// Add optional headers.
if (!empty($some_condition)) {
  array_push($http_header, "Other-Value-Three: whatever");
}

// Set up curl_exec.
$curl = curl_init();
$url = "https://www.somewhere-over-the-rainbow.com";
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, $httpHeader);
$response = curl_exec($curl);
curl_close($curl);
于 2013-07-03T03:37:29.580 に答える
0

私はこれをテストしていませんが、値に空白を設定してみてください。これは、cURL が行っている検証を通過する可能性があり、ヘッダー内の値の前の空白は無視されるはずです。

于 2013-07-03T04:32:43.490 に答える