Zend HTTP Client пароль - PullRequest
       4

Zend HTTP Client пароль

6 голосов
/ 17 марта 2011

Я пытаюсь подключиться из кода PHP (Zend Framework) к веб-службе aspx.Мне нужно отправить по почте несколько параметров на страницу (адрес электронной почты, пароль).Я попытался использовать 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 - это имя пользователя и пароль, которые я использую для входа в веб-сервис (у него есть всплывающее окно, которое запрашивает у меняимя пользователя и пароль).

Этот код дает мне неавторизованную страницу.Поэтому я спрашиваю, где я неправильно использую имя пользователя и пароль?Как я могу их использовать?

edit: Auth является базовым auth.

Edit2:

Я говорил с владельцем веб-службы, он говорит, что все в UTF-8 это проблема, не так ли это по умолчанию?Если нет, то как мне это сделать?

Ответы [ 5 ]

4 голосов
/ 23 марта 2011

Вы можете проверить, нужен ли заголовок реферера, или может потребоваться номер подделки межсайтового запроса. Просто отбросьте запрос, сделанный вашим браузером при входе в систему, и дамп запроса, который генерирует ваш скрипт, сравните его, и он должен сработать.

Для дампа запросов браузера вы можете использовать плагин livehttpheaders для firefox.

0 голосов
/ 26 марта 2011

Лучший способ справиться с этим - просто использовать анализатор пакетов (tcpdump, ethereal, ...), чтобы увидеть, что происходит на линии. Затем сравните запрос / ответ, который вы наблюдаете в рабочем сценарии (например, из браузера), с запросом / ответом, который не работает.

Это очень быстро покажет точную разницу на уровне HTTP. Используя эту информацию, вы можете узнать, что нужно исправить при обработке Zend_Http_Client, или выяснить, что Zend_Http_Client не поддерживает определенную функцию или схему аутентификации.

0 голосов
/ 26 марта 2011

Если вы можете получить доступ к сервису с помощью браузера, используйте firebug для проверки запроса и ответа.Там могут быть некоторые другие параметры, например, cookie.

0 голосов
/ 23 марта 2011

Вы пробовали это?

$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, или что-то, что разработано самостоятельно?поскольку для обычной аутентификации вы обычно не будете отправлять какие-либо параметры сообщения ...

, реальный URL сайта очень поможет в поиске решения ...

0 голосов
/ 20 марта 2011

Зависит от того, что на самом деле это всплывающее окно.

Возможно, вам нужно изучить 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');

Источник.

Если это не HTTP-аутентификация и что-то не такВ противном случае попробуйте использовать cURL, wget или linx, чтобы точно увидеть, что происходит на странице, и теперь вы можете смоделировать это с помощью Zend_Http_Client.Иногда вам нужно отправить куки, выполнить несколько Js или выполнить некоторые перенаправления.Zend_Http_client может делать все это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...