https for stream_context_create

时间:2017-07-24 05:30:46

标签: php api magento2

我尝试这样做的新手,我试图在magento2中使用https获取令牌,它在我的代码中不起作用

<?php
$base_url="https://myurl.com/";
$domain="myurl.com";
$url = $base_url.'index.php/rest/V1/integration/admin/token';
$body = '{"username":"ApiUser", "password":"ApiPass"}';

$context_options = array (
        'https' => array (
            'method' => 'POST',
            'header'=> "Content-type: application/json"
            'content' => $body
            ),
        'ssl' => array('SNI_enabled'=>true,'SNI_server_name'=> $domain)
        );

$context = stream_context_create($context_options);
$token = json_decode(file_get_contents($url, false, $context));
echo $token; echo "<br/>";
?>

请提前帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

很抱歉收到超级迟到的回复,但也正在寻找使用https URL而不是http的解决方案。

从PHP手册页/示例开始,上下文不应为https,而应为http .: http://php.net/manual/it/function.stream-context-create.php#74795

不正确:

$context_options = array (
    'https' => array ()
)

正确:

$context_options = array (
    'http' => array ()
)

of,如果您需要更多SSL选项,则此注释: http://php.net/manual/it/function.stream-context-create.php#110158

$contextOptions = array(
    'ssl' => array(
        'verify_peer'   => true,
        'cafile'        => __DIR__ . '/cacert.pem',
        'verify_depth'  => 5,
        'CN_match'      => 'secure.example.com'
    )
);

答案 1 :(得分:0)

stream_context_create环境中工作时,使用SSL创建流上下文的最简单方法是省略验证!当我想使用file_get_contents检索数据时,这对我来说很好:

stream_context_create( array (
    'http' => array ( /* your options here - eg: */ 'method' => 'POST', ),
    /* 'https' => 'DON'T forget there is no "https", only "http" like above', */
    'ssl'  => array ( // here comes the actual SSL part...
        'verify_peer'      => false,
        'verify_peer_name' => false,
    )
) );

php.net/manual/en/context.ssl.php

  

verify_peer boolean
  需要验证所使用的SSL证书。
  默认为TRUE。

     

verify_peer_name boolean
  需要验证对等方名称。
  默认为TRUE。