将json请求的头文件传入file_get_contents()



我需要将这些标题传递到$context变量,我尝试使用将值放入数组,然后将其传递到stream_context_create()函数,但我从file_getcontents函数获得http警告

$prod_id = 4322;
$tnxRef = "RT45635276GHF76783AC";
$mackey =  "ADECNH576748GH638NHJ7393MKDSFE73903673";
$agent = $_SERVER['HTTP_USER_AGENT'];
$hash = hash('SHA512', $prod_id.$txnRef.$mackey);
$headers = array(
    'http'=>(
        'method'=>'GET',
        'header'=>'Content: type=application/json rn'.
            '$agent rn'.
            '$hash'
        )
    )
stream_context_create($headers)
$url_returns = file_get_contents("https://test_server.com/test_paydirect/api/v1/gettransaction.json?productid=$prod_id&transactionreference=$txnRef&amount=$amount", false, $context);  
$json = json_decode($url_returns, true);

错误:

[功能。file-get-contents]: failed to open stream: HTTP请求失败!HTTP/1.1 400错误请求'

这是我得到的错误,谁能帮我一个明确的例子

你的代码中有几个错误。

服务器返回400 Bad Request,因为您的代码将导致以下错误的HTTP请求:

GET /test_paydirect/api/v1/gettransaction.json?productid=4322&transactionreference=RT45635276GHF76783AC&amount= HTTP/1.1
Host: test_server.com
Content: type=application/json
$agent
$hash

错误如下:

  1. 变量表达式不在单引号内求值
  2. $amount没有在你的代码示例
  3. 中设置
  4. 标题是Content-Type:而不是Content: type=
  5. 所有标头(代理,哈希)必须有相应的名称

下面是一个应该工作的例子:

$context = stream_context_create(array(
  'http' => array(
    'method' => 'GET',
    'agent'  => $agent,
    'header' => "Content-Type: application/jsonrn"
        . "X-Api-Signature: $hash"
    )
  )
);

请注意: X-Api-Signature只是一个例子-它取决于你正在使用的API如何命名API密钥头以及如何计算哈希。您应该在API的文档中找到这些信息!

相关内容

  • 没有找到相关文章

最新更新