1

我目前正在开发一个 Web 应用程序,它使用位于不同服务器上的 XML 接口,我必须通过代理访问该接口。

所以我尝试在stream_context_create数组中设置代理,但它似乎不起作用。

$set = array(
    'http' => array(
        'method' => 'GET',
        'header' => sprintf(
            'Proxy-Authorization: Basic %s',
            base64_encode(Constants::XML_AUTH)
        ),
        'protocol_version' => '1.1',
        'proxy' => '89.122.180.178:46565'
    )
);
$stream = stream_context_create($set);

我不太确定我做错了什么。如果我注释掉proxy密钥,我会得到应有的403 Forbidden响应。如果我在proxy密钥中发表评论,我会收到400 Bad Request回复。

我不太确定我做错了什么。你能帮我吗?我以前从未使用 PHP 通过代理进行过通信。

4

1 回答 1

0

我的猜测是代理声明缺少协议。必须指定一个URI(根据doc),其中包含协议(方案)。

所以这可以工作:'proxy' => 'tcp://89.122.180.178:46565'. 可能需要删除'protocol_version',因为 tcp 可能不需要。

那对你有用吗?(或者你已经解决了吗?... ;-)

于 2019-08-01T09:25:04.600 回答