带有代理的PHP stream_context_create

时间:2012-07-16 10:24:30

标签: php http proxy

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

所以我尝试在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之前,我从未通过代理进行过通信。

1 个答案:

答案 0 :(得分:0)

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

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

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