使用我的用户名和密码创建一个JSON格式的文本文件?

时间:2012-05-01 06:58:40

标签: php json api http authentication

我正在尝试使用PHP通过使用.txt文件发布到身份验证方法来对Web服务进行身份验证,该文件包含以JSON格式化的用户名和密码。

它不起作用,我很难搞清楚为什么不这样做。

这是我正在尝试使用的代码。首先是我用来发布的功能。然后我为我的数据文件创建一个变量,为我的auth服务的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”,       “密码”:“mypassword”   } }

我做错了什么?我收到了无效的数据错误。我是否需要使用文本文件的完整URL?文本文件格式不正确吗?

服务的文档只说我需要:

“带有您的用户名和密码的JSON格式的文本文件”

2 个答案:

答案 0 :(得分:1)

$data= 'creds.txt';应该像:

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

我没有看到你在任何地方打开creds.txt,我相信你应该以jSON格式发送。

答案 1 :(得分:0)

如果没有透露“service.com”或有关网站本身的更多细节,很难找出解决方案,因为它可以是很多东西,但你永远不会传递实际数据(只有文件)路径)。

尝试:

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