2011-07-26 13 views
7

Łączę się, korzystając z Microsoft C#, z serwisem internetowym firmy Microsoft. Muszę podać nazwę użytkownika, hasło (w kodzie C#); i zainstaluj certyfikat (w formacie .cer) w sekcji "Urzędy certyfikacji głównych" certyfikatów systemu.Łączenie się z usługą sieciową za pomocą PHP tylko nazwa użytkownika, hasło i urząd certyfikacji

Jak mogę połączyć się z taką usługą w PHP? Powodem, dla którego pytam, jest to, że wszystkie metody, które widziałem (takie jak wsdl2php, który tworzy podklasę SoapClient), wydają się zakładać różne rzeczy, takie jak certyfikat SSL, plik klucza SSL i hasło klucza SSL.

To wszystko wprowadza mnie w błąd. Nie jestem pewien, co powinno iść tam, gdzie. Nie jestem pewien, gdzie powinien iść mój "główny urząd certyfikacji" (plik .cer) i gdzie powinna iść nazwa użytkownika i hasło. Jakieś pomysły?

Odpowiedz

5

wszystko można zrobić pokojowe soapclient i stream_context_create użyciu ssl options

<?php 
$context = stream_context_create(array(
    'https' => array(
    'cafile' => '/path to file', 
    'verify_peer' => true 
))); 

new soapclient("https://localhost/index.php?wsdl",array(
    'login'=>'admin', 
    'password'=>'passss', 
    'stream_context'=> $context 
)); 

nie jest rzadkością w mydło, aby nie używać http auth ale tylko mydło-call The documnetation jest niezbędna

może być nagradzanie za korzystanie z klas mydlanych w klasach używając mapowania klas do mapowania typów mydlanych na php

+0

Czy masz jakiś kod, który może to zrobić w NuSOAP? Jeśli używam twojego kodu, zawsze otrzymuję ten błąd: Ostrzeżenie PHP: SoapClient :: __ doRequest(): SSL: Połączenie zresetowane przez peer w /Users/enchilada/Desktop/test.php na linii 22 PHP Błąd krytyczny: Uncaught SoapFault wyjątek: [HTTP] Błąd Pobieranie nagłówków HTTP w /Users/enchilada/Desktop/test.php:22 – Enchilada

+1

instalacja libssl, curl, libxml (jeśli nie inst. I linux) i aktualizacja php, są błędy wskazujące na ten błąd, spróbuj dodać opcja śledzenia w tworzeniu instancji, jeśli to nie zadziałało, start wireshark – borrel

+0

Spróbuję tego. Dzięki. Wrócę do ciebie, jeśli nadal nie zadziała. – Enchilada

0

Zazwyczaj jeśli wywołanie usługa przy użyciu zwykłego protokołu SSL adres URL będzie wyglądać następująco:

https://username:[email protected]/mywebservice.php

Potem jest problem z certyfikatem SSL. Używam czegoś podobnego do odczytu z internetowego SVN chronionego protokołem SSL. Nie znam innego rozwiązania niż logowanie się do serwera jako użytkownik, który uruchamia serwer WWW (apache/IIS) i ręczne akceptowanie certyfikatu. W przypadku SVN możesz dokonać kasy i poprosić o zaakceptowanie certyfikatu. Nie jestem do końca pewien, jak to będzie działać w przypadku zwykłego żądania HTTPS, ale być może możesz uzyskać certyfikat, ładując serwis internetowy w przeglądarce? (lub używając wget lub czegoś fantazyjnego, jeśli masz tyle szczęścia, że ​​używasz Linuksa)

Czy twój kod jest też kodem PHP lub C#? Jeśli to C#, być może będziesz musiał zrobić coś zupełnie innego.

Powiązane problemy