2

JSON 形式のユーザー名とパスワードを含む .txt ファイルを使用して認証方法に投稿することにより、PHP を使用して Web サービスに認証しようとしています。

うまくいかず、その理由を理解するのに苦労しています。

これが私が使用しようとしているコードです。まず、投稿を行うために使用している関数があります。次に、データ ファイル用の変数と、認証サービスの 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": { "username": "myusername", "password": "mypassword" } }

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

サービスのドキュメントには、次のものが必要だとだけ書かれています。

「ユーザー名とパスワードを含む JSON 形式のテキスト ファイル」

4

2 に答える 2

1

$data= 'creds.txt';次のようにする必要があります。

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

どこも開いていないようですcreds.txt。json 形式で送信する必要があると思います。

于 2012-05-01T07:17:32.133 に答える
0

" " または Web サイト自体の詳細を開示しないservice.comと、解決策を見つけるのが難しくなります。理由はさまざまですが、実際のデータ (ファイル パスのみ) を渡すことは決してないからです。

試す:

$authkey = do_post_request($url, file_get_contents($data));
于 2012-05-01T07:17:11.917 に答える