2016-06-21 5 views
2

カールGETリクエストからJSONレスポンスを取得しようとしていますが、それを動作させることができませんでした。私はいくつかの例を試して、何も戻ってこないだけです。これは私が試しているものです:PHPでカールGETに問題がある

$Url = "http://app.whistle.com/api/dogs/132376/dailies/16955&X-Whistle-AuthToken=xxxxxxxxxxxxxxxxxxxxxxxx"; 

$ch = curl_init($Url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
echo $result; 

これはなぜ動作しないのですか?

+1

401を返します。許可されていません。私はあなたが渡す必要がある認証方法には多くがあると思います。 – aynber

+1

あなたは単に成功を前提としています。外部リソースを扱うときは決して成功するとは限りません。常に失敗とみなし、失敗をチェックし、成功を楽しい驚きとして扱います。 'if($ result === false){die(curl_error($ ch)); } '。 curl_execが失敗すると、boolean falseを返します。これは、長さ0の見えない文字列として返されます。 –

+0

本当に奇妙なことに、それはそのまま私のブラウザに表示されます。私は電話でiOSアプリケーションからcharlesプロキシを使用してトークンを取得することができましたが、なぜこのURLが私のMacブラウザに表示されるのを今までのように(そしてそれでも)認めていません。明らかに、これは私に探し始める場所を与える。ありがとう。 – nonlinearmind

答えて

0

URLはHTTP 401ステータス(許可されていません)を返します。これは、認証が失敗したことを意味します。認証パラメータを確認する必要があります。ユーザー名とパスワードを設定する必要があるかどうか、またはAuthTokenが有効であることを確認します。

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
0

URLにX-Whistle-AuthTokenを追加したようです。まず、で始まり、&ではなく、最初のパラメータなので、これが行われます。

このX-Whistle-AuthTokenX-で始まるので、HTTP GETパラメータではなく、CURLを使用してHTTPヘッダーとして送信する必要があると仮定します。 しかし、対応するドキュメントをチェックして、APIがあなたの答えをどのように期待しているかを確認する必要があります。このような

何かが、おそらくそれが必要として動作します。

$Url = "http://app.whistle.com/api/dogs/132376/dailies/16955"; 

$ch = curl_init($Url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Whistle-AuthToken: 214cca48930110a634cfc34fe9b4ee17")); 

$result = curl_exec($ch); 
if ($result === false){ die(curl_error($ch)); } 

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
var_dump($result); 

なく、少なくとも最後に:

変更し、あなたの持つAuthToken。おそらくプライベートになるはずのプライベートトークンが漏れただけです。

関連する問題