【发布时间】:2012-07-16 10:24:30
【问题描述】:
我目前正在开发一个 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 通过代理进行过通信。
【问题讨论】:
-
400 响应是否有正文? 400 错误可能有很多原因,希望响应正文中会有有意义的错误消息。如果您在上下文数组中添加一个
'ignore_errors' => TRUE键,PHP 将返回响应的正文,而不管响应状态如何。 -
它说
Invalid Request说明请求中的某些内容丢失或损坏。 -
它认为我需要在这里查看完整的代码,包括 URL(如果需要,您可以将实际的主机名空白),如果您可以显示 HTTP 请求,它肯定会有所帮助正在生成。您的服务器上有可用的 cURL 吗?它对请求提供了更精细的控制,并且更容易调试。