Zend HTTP客户端密码

时间:2011-03-17 18:27:34

标签: php zend-framework https

我试图从PHP(Zend Framework)代码连接到aspx Web服务。我需要通过帖子发送几个参数到页面(电子邮件,密码)。我曾尝试使用Zend_Http_Client,并执行此操作:

$client = new Zend_Http_Client('https://thesiteurl.asmx/Login');
$client->setMethod(Zend_Http_Client::POST);
$client->setAuth($username, $password);
$client->setParameterPost(array('email' => 'email', 'password' => 'password'));
$response = $client->request();
$this->view->response = $response;

其中$username, $password是我用来登录Web服务的用户名和密码(它有一个弹出窗口,要求我输入用户名和密码)。

此代码为我提供了未经授权的页面。所以我问我在哪里使用网站用户名和密码错了?我该如何使用它们?

编辑: Auth是auth-basic。

EDIT2:

我和网络服务的老板谈过他说一切都是UTF-8这是一个问题,不是默认的吗?如果不是我该怎么做?

5 个答案:

答案 0 :(得分:4)

您可以检查是否需要referer-header,或者它可能还需要跨站点请求伪造号码。只需在登录时转储浏览器发出的请求并转储脚本生成的请求,然后比较这些请求即可。

对于浏览器请求转储,您可以使用firefox的livehttpheaders插件。

答案 1 :(得分:0)

取决于弹出框的真实含义。

您可能需要学习HTTP身份验证。目前,Zend_Http_Client仅支持基本的HTTP身份验证。使用setAuth()方法或通过在URI中指定用户名和密码来使用此功能。 setAuth()方法有3个参数:用户名,密码和可选的身份验证类型参数。如上所述,目前仅支持基本身份验证(计划使用摘要式身份验证)。

// Using basic authentication
$client->setAuth('shahar', 'myPassword!', Zend_Http_Client::AUTH_BASIC);

// Since basic auth is default, you can just do this:
$client->setAuth('shahar', 'myPassword!');

// You can also specify username and password in the URI
$client->setUri('http://christer:secret@example.com');

Source.

如果这不是HTTP身份验证并且是其他问题,请尝试使用cURL,wget或linx查看页面上发生的确切内容,现在可以使用Zend_Http_Client进行模拟。 有时您必须发送cookie,执行一些J或遵循一些重定向。 Zend_Http_client可以做所有这些事情。

答案 2 :(得分:0)

你试过这个吗?

$config = array(
    'adapter'      => 'Zend_Http_Client_Adapter_Socket',
    'ssltransport' => 'tls'
);

$client = new Zend_Http_Client('https://thesiteurl.asmx/Login', $config);
$client->setAuth('shahar', 'myPassword!', Zend_Http_Client::AUTH_BASIC);

我也很困惑,这个弹出窗口是一个http基本身份验证,还是自我设计的东西? 因为对于基本认证,你通常不会发送任何邮件参数...

网站的真实网址非常有助于找到解决方案......

答案 3 :(得分:0)

如果您可以使用浏览器访问服务,请使用firebug检查请求和响应。可能还涉及一些其他参数,例如cookie。

答案 4 :(得分:0)

解决这些问题的最佳方法是使用数据包嗅探器(tcpdump,ethereal,...)来查看线路上发生的情况。然后将您在工作方案中(例如从浏览器中)观察到的请求/响应与不起作用的请求/响应进行比较。

这将很快揭示HTTP级别的精确差异。使用此信息,您可以找出在处理Zend_Http_Client时要解决的问题,或者发现Zend_Http_Client不支持特定功能或身份验证方案。