2011-06-30 19 views
2
私はそれが/読みのcURLを使用せずにPHPでPOSTリクエストの後にHTTPレスポンスヘッダを解析することが可能ですかどうかを知りたい

...PHPでPOSTリクエスト後にHTTPレスポンスヘッダを取得するには?

私はIIS7 の下にPHP 5を持って、私はPOSTを使用したコードは次のようになります -

 
$url="http://www.google.com/accounts/ClientLogin"; 
$postdata = http_build_query(
    array(
     'accountType' => 'GOOGLE', 
     'Email' => '[email protected]', 
     'Passwd' => 'xxxxxx', 
     'service' => 'fusiontables', 
     'source' => 'fusiontables query' 
    ) 
); 
$opts = array('http' => 
    array(
     'header' => 'Content-type: application/x-www-form-urlencoded', 
     'method' => 'POST', 
     'content' => $postdata 
    ) 
); 
$context = stream_context_create($opts); 
$result = file_get_contents($url, false, $context);

以上、単純なClientLogin認証をGoogleに行って、ヘッダーに返すAuthトークンを取得したいとします。 $ resultをエコーすると、本文の内容だけが返され、認証トークンのデータを含むヘッダーは返されません。

+0

あなたの例でレスポンスヘッダを持つことができないと思います(file_get_contentsはレスポンスボディを返します) – Andreas

+0

php5のget_headers()は何をしますか? (sinanは下で回答しました)または、php5を使用してGoogle ClienLoginから認証トークンを取得するための回避策をお勧めしますか? – Irfan

答えて

1

get_headers()関数は、探している関数である可能性があります。

http://php.net/manual/en/function.get-headers.php

+0

ちょっと変わったけど、今はどうしていますか: "ストリームを開けませんでした:ソケット転送" ssl "を見つけることができませんでした - PHPを設定したときに有効にするのを忘れましたか?しかし、私はhttpsを使っていないのですか? – Irfan

+1

@ Power-Inside、おそらくSSL URLにリダイレクトされています。 [http context documentation](http://www.php.net/manual/en/context.http.php)の 'follow_location'と' max_redirects'オプションを参照してください。 – jason

1

使用しignore_errorsコンテキストオプション(documentation):

$opts = array('http' => 
    array(
     'header' => 'Content-type: application/x-www-form-urlencoded', 
     'method' => 'POST', 
     'content' => $postdata, 
     'ignore_errors' => true, 
    ) 
); 

また、多分fopenではなくfile_get_contents使用しています。 stream_get_meta_data($fp)に電話してヘッダーを入手してください。上記リンクのExample #2をご覧ください。

関連する問題