Php 调用Orange产品订单事件服务时获取身份验证错误

Php 调用Orange产品订单事件服务时获取身份验证错误,php,fopen,orange-api,Php,Fopen,Orange Api,我们正在实施Orange business apps API。为此,我们需要呼叫橙色服务。此服务具有承载类型身份验证(Oauth2)。我能够成功获取访问令牌,访问令牌有效期为90天。通过使用最新的访问令牌,我试图通过在标头中发送访问令牌来调用Orange服务,但每次都会出现未经授权的访问错误 Here is code public static function sendEventProductOrder($eventProductOrdering) { $jsonMappe

我们正在实施Orange business apps API。为此,我们需要呼叫橙色服务。此服务具有承载类型身份验证(Oauth2)。我能够成功获取访问令牌,访问令牌有效期为90天。通过使用最新的访问令牌,我试图通过在标头中发送访问令牌来调用Orange服务,但每次都会出现未经授权的访问错误

Here is code

public static function sendEventProductOrder($eventProductOrdering) {

        $jsonMapper = new JsonMapper();

        $opts = array('http' => array('method'=>'POST',
                                        'header'=>'Content-type: application/x-www-form-urlencoded\r\n'.'Authorization: Bearer xxxxxxxxxxxxxxxxx\r\n',
                                        'content' => json_encode($jsonMapper->unmap($eventProductOrdering)),

        ));

        $context = stream_context_create($opts);

        if (($stream = fopen("https://api.orange.com/mba/productordering/v2/event", 'r', false, $context)) !== false) {
            $content = stream_get_contents($stream);
            $header = stream_get_meta_data($stream);
            fclose($stream);
            return HelperMisc::isEqualIgnoreCase($header['wrapper_data']['0'], 'HTTP/1.1 201 Created');
        }

        return false;
    }
有人能帮我吗


谢谢你的帮助

您可以尝试将引号
更改为
?如下所示:

$requestArray = [
    'name' => 'User',
    'age'  => 100
];

'header'  => "Content-type: application/x-www-form-urlencoded\r\n" .
             "Authorization: Bearer xxxxxxxxxxxxxxxxx\r\n",
'content' => http_build_query($requestArray)

因为
\r\n
在一个引号内不起作用
'
,所以它发送“原样”

谢谢你的回复。我尝试了将单引号改为双引号,然后错误改为400错误请求(之前的错误是401未经授权)。你知道这里有什么问题吗?@user3616545尝试这个
'content'=>http\u build\u查询($jsonMapper->unmap($eventProductOrdering))
或者您可以显示$opts的转储吗?我在json请求中遇到问题,我错过了json中的一些键,所以他们发送了400个错误请求。在获得支持后,他们向我指出了缺少的参数。我更新了它,它现在正在工作。您指出了代码中的错误。谢谢您的帮助!。