2012-05-01 9 views
2

JSONでフォーマットされたユーザー名とパスワードを含む.txtファイルを使用して認証メソッドに投稿することで、PHPを使用してWebサービスを認証しようとしています。ユーザー名とパスワードを使用してJSON形式のテキストファイルを作成しますか?

これは機能しません。私はなぜ難しくないのか分かりません。

私が使用しようとしているコードは次のとおりです。まず、投稿を行うために使用している関数があります。次に、データファイルの変数と、認証サービスのURLの変数を作成します。

<?php 


function do_post_request($url, $data, $optional_headers = null) 
{ 
    $params = array('http' => array(
      'method' => 'POST', 
      'content' => $data 
     )); 
    if ($optional_headers !== null) { 
$params['http']['header'] = $optional_headers; 
    } 
    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) { 
throw new Exception("Problem with $url, $php_errormsg"); 
    } 
    $response = @stream_get_contents($fp); 
    if ($response === false) { 
throw new Exception("Problem reading data from $url, $php_errormsg"); 
    } 
    return $response; 
} 

// Let's get logged in and get an authkey 

$url = 'http://service.com/auth'; 
$data= 'creds.txt'; 

$authkey = do_post_request($url, $data); 

     print_r($authkey); 

?> 

私creds.txtファイルのテキスト:

{ "AUTH":{ "ユーザー名": "myusernameと指定"、 "パスワード": "mypasswordという" }}

私は何が間違っていますか?無効なデータエラーが発生しています。テキストファイルの完全なURLを使用する必要がありますか?テキストファイルが正しくフォーマットされていませんか?サービスの

ドキュメントが唯一の私が必要と言う:

「ユーザー名とパスワードを使用してJSON形式のテキストファイルを」

+0

どのラインでエラーが表示されますか?さらに、テキストファイルの内容が文字列として読み込まれ、jsonとして解析されないことがあります。 –

+0

サービスは 'application/json'ヘッダを除いているのでしょうか? – Nadh

+0

"エラー": "ユーザー名またはパスワードが要求に設定されていません"、 "error_description": "ユーザー名\ /パスワード値が無効です"、 "error_code": "INVALID_LOGIN" – bflora2

答えて

0

ウェブサイト自体それについて「service.com」以上の詳細」開示することなく、あなたが実際のデータ(ファイルのパスのみ)を渡すことは決してないので、解決策を見つけるのは難しいでしょう。

試してみてください。

$authkey = do_post_request($url, file_get_contents($data)); 
+0

問題が解決しました。 jSONファイルにスペースがありませんでした。 :(JSONは文字の間隔についてとても気が利いていません – bflora2

1

$data= 'creds.txt';は次のようにする必要があります:私はあなたがcreds.txtどこでもを開く表示されません

$data= file_get_contents('creds.txt'); 

、私はあなたがJSON形式で送信する必要があります信じています。

関連する問題