2011-03-17 16 views
6

PHP (Zend Framework) kodundan aspx Web Service'e bağlanmaya çalışıyorum. Sayfamıza birkaç parametre göndermek (e-posta, şifre) göndermem gerekiyor. Ben Zend_Http_Client kullanın ve yapmaya çalıştık bu: Zend HTTP İstemci parolası

$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 Ben web servisine giriş yapmak için kullandığınız kullanıcı adı ve şifre olan

(Bu kullanıcı adı ve şifre için bana isteyen bir pop-up penceresi vardır)

.

Bu kod bana yetkisiz bir sayfa veriyor. Bu yüzden site kullanıcı adı ve şifresini nerede yanlış kullanıyorum soruyorum? Onları nasıl kullanabilirim?

düzenleme: Kimlik Doğrulama Auth-basic.

Edit2:

Ben bir varsayılan isnt her şeyin UTF-8 bu sorunun olduğunu söylüyor web hizmetinin sahibine konuştuk? Eğer değilse, bunu nasıl yaparım?

+1

bu işe yarar .. .. ama kimlik bilgilerini URL'ye eklemeye çalışabilirsiniz: $ client-> setUri ('https: // user: [email protected]'); – opHASnoNAME

+0

çalışmaya çalıştı, hiç bir işe yaramadı –

+0

Site temel yetkilendirme kullanıyor mu, yoksa sindiriyor mu? – akond

cevap

4

Bir referer-header'ın gerekli olup olmadığını kontrol edebilir veya aynı zamanda bir siteler arası talep sahtecilik numarası gerektirebilir. Sadece tarayıcınız tarafından yapılan istek üzerine giriş yapın ve komut dosyanızın oluşturduğu isteği döküyorsanız, bunları karşılaştırın ve çalışmalısınız.

Tarayıcı isteği çöplüğü için firefox için livehttpheaders eklentisini kullanabilirsiniz.

0

Açılır kutunun gerçekte ne olduğuna bağlı.

Muhtemelen HTTP Kimlik Doğrulaması'nı incelemelisiniz. Şu anda, Zend_Http_Client sadece temel HTTP kimlik doğrulamasını desteklemektedir. Bu özellik setAuth() yöntemi kullanılarak veya URI'da bir kullanıcı adı ve şifre belirterek kullanılır. SetAuth() yöntemi 3 parametre alır: Kullanıcı adı, parola ve isteğe bağlı bir kimlik doğrulama türü parametresi. Belirtildiği gibi, şu anda sadece temel kimlik doğrulaması desteklenmektedir (özet kimlik doğrulaması desteği planlanmaktadır).

// 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:[email protected]'); 

Source.

bu bir HTTP auth değildir ve başka somothing ise

, sayfadaki neler olduğunu tam olarak görmek için cURL, wget veya Linx kullanmayı deneyin ve şimdi Zend_Http_Client kullanarak simüle edebilirsiniz. Bazen, çerezleri göndermeniz, bazı J'leri yürütmeniz veya bazı yönlendirmeleri takip etmeniz gerekir. Zend_Http_client bütün bunları yapabilir.

+0

Her türlü kimlik doğrulama yöntemini curl lib'de denedim. Ve hiçbir çerez veya Js gereklidir. –

0

bunu denediniz mi? Ayrıca Kafam karışık

$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); 

, bu pop-up kendine tasarlanmış bir http temel kimlik doğrulaması veya bir şeydir? Sitenin gerçek URL çözüm bulmak için çok yardımcı olacağını

temel kimlik doğrulama için normalde herhangi sonrası params göndermek olmaz çünkü ... ...

+0

Auth basic –

+0

Bu kodu $ client-> setParameterPost (array ('a' => 'asd')) ile kullanmaya çalıştıktan sonra; Bir İstisnım var, onsuz O hala izinsiz sayfaya gidiyor –

0

Eğer tarayıcı kullanarak servis erişemiyorsanız isteği ve yanıtı kontrol etmek için firebug kullanın. Bazı diğer parametreler de olabilir, örneğin çerez.

0

Bu şeylerin üstesinden gelmenin en iyi yolu, paketin içinde neler olup bittiğini görmek için paket dinleyicisini (tcpdump, ethereal, ...) kullanmaktır. Ardından, çalışma senaryosunda (örn. Tarayıcınızdan) gözlemlediğiniz istek/yanıtı, çalışmayan istek/yanıtla karşılaştırın.

Bu, HTTP düzeyindeki kesin farkı çok hızlı bir şekilde ortaya çıkaracaktır. Bu bilgileri kullanarak ya Zend_Http_Client kullanım kılavuzunda neyin düzeltileceğini öğrenebilir veya Zend_Http_Client'un belirli bir özellik ya da kimlik doğrulama şemasını desteklemediğini öğrenebilirsiniz.

İlgili konular