2016-09-28 3 views
1

PHPを使用して、file_get_contentsコマンドを使用してリモートサーバーからJSONを取得しています。PHP経由で認証ヘッダーを添付するにはどうすればいいですか?

$opts = array(
    'https'=>array(
    'method'=>'GET', 
    'header'=>'Accept-language: en\r\n' . 
       'Authorization: MAC ["3","ios2.5.0","123","123abc","123=","abc="]\r\n' . 
       'User-Agent: abc/1.1.1 iOS/10.0.2 iPhone/iPhone7,1\r\n' 
) 
); 

$context = stream_context_create($opts); 

$file = file_get_contents('https://www.google.com/v11/file?search=ios&with=users%2Cfiles%2Cquestions', false, $context); 

echo $file; 

を私は迅速なデバッグをやった:私は同じヘッダを持つJSONファイルを取得することができたポストマンを使用して

  1. をここで私が使用したコードの一部です。
  2. 私は別のURLから別のjsonを試しました、それは動作します。
  3. 私はローカルファイルを試しました、それは動作します。
+2

移動 '\ rを\ N 'を二重引用符の中に - '言語受け入れ:EN」を。 "\ r \ n"。 – labue

+0

@nogadそれはGoogleではありません。デモの目的のために、私はURLを変更しました。 –

+0

@labueうまくいきませんでした –

答えて

1

あなたは何を理解する必要がありますfile_get_contentsです。このコマンドはサーバー上のファイルを取得する要求です。この場合、サーバー上では1つのステップとしてhttps://www.google.com/v11/file/index.htmlを取得するように要求しています。あなたのURLは原点を確認するためにヘッダーを使用しているようですので、サーバーコンポーネントがfile_get_contentsリクエストからの出力を許可するように設定されていないことを意味し、おそらくcURLリクエストを受け入れます。

だからあなたが使用することができます。

curl_exec() 
関連する問題