2015-06-27 20 views
5

Nigdy wcześniej nie używałem SOAP (i nadal nie byłbym, gdyby nie był potrzebny), ale muszę wykonać wyszukiwanie wejściowe, aby wyświetlić informacje (za pomocą php lub JavaScript) z usługi internetowej używając mydła i mam this Query, z XML Service Deschiption i adres metoda: prototypUżyj PHP, aby wyświetlić informacje z usługi sieci Web korzystającej z SOAP

{AdresaInterfata}?op= CautareDosare 

i ta metoda:

[WebMethod(Description = "Cautare dosare dupa numar, obiect, institutie")] 
     public Dosar[] CautareDosare(
      string numarDosar, 
      string obiectDosar, 
      string numeParte, 
      Institutie? institutie, 
      DateTime? dataStart, 
      DateTime? dataStop 

      ) 

... a ja po prostu nie wiem gdzie aby rozpocząć lub co zrobić, aby je połączyć. Ta usługa internetowa zawiera informacje o wszystkich plikach sprawiedliwości, ich statusie/aktualizacjach i tak dalej. An example z tego działa na własnej stronie internetowej.

Odpowiedz

8

Szczęśliwie dla ciebie, problem ten został rozwiązany przez wielu przed tobą, więc możesz skorzystać z ich pracy.

miałem wiele sukcesów z tym projektem: https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

(pakowane dla kompozytora tutaj: https://packagist.org/packages/wsdl2phpgenerator/wsdl2phpgenerator)

Ma klasę, którego można użyć do generowania klas klienta SOAP w PHP od A WSDL. Zasadniczo pisze on dla ciebie kod, którego możesz użyć do wykonania twoich wywołań SOAP, skutecznie odciągając cały ten problem. Mają też dość dobrą dokumentację. Jeśli szukasz punktu wyjścia, może to być dobre, ponieważ ma dla ciebie dużo pracy.

Jeśli wolisz zacząć bardziej niski poziom, można sprawdzić PHP SoapClient Klasa: http://php.net/manual/en/class.soapclient.php

Wsdl2Php Przykład

Oto skrypt wrzuciłem razem który generuje potrzebny kod:

<?php 
// generate.php 

// Include composer autoloader to pull in libraries: 
require 'vendor/autoload.php'; 

// Generate client code for the web service: 
$generator = new \Wsdl2PhpGenerator\Generator(); 
$generator->generate(
    new \Wsdl2PhpGenerator\Config(array(
     'inputFile' => 'http://portalquery.just.ro/query.asmx?WSDL', 
     'outputDir' => '/path/for/generated/code' 
    )) 
); 

Następnie uruchomiłem skrypt z linii poleceń, a następnie przeszedłem do "/ path/for/generated/code", aby znaleźć wygenerowane klasy.

Stamtąd stworzył poniższy skrypt:

<?php 
// This line disables the SOAP cache. This should be removed for production. 
ini_set("soap.wsdl_cache_enabled", "0"); 

// Pull in generated class autoloader: 
require '/path/for/generated/code/autoload.php'; 

$query = new Query(); 
$dateStart = new DateTime('2015-05-01'); 
$dateStop = new DateTime('2015-05-02'); 

// This would be a lot easier if I knew Romanian! 
$cautareDosare = new CautareDosare("","","",Institutie::CurteadeApelBRASOV,$dateStart,$dateStop); 

$results = $query->CautareDosare($cautareDosare); 

?> 
<html> 
    <body> 
    <pre> 
<?php var_export($results); ?> 
    </pre> 
    </body> 
</html> 

co dało następujące wyniki:

CautareDosareResponse::__set_state(array(
    'CautareDosareResult' => 
    ArrayOfDosar::__set_state(array(
    'Dosar' => 
    array (
     0 => 
     Dosar::__set_state(array(
     'parti' => 
     ArrayOfDosarParte::__set_state(array(
      'DosarParte' => 
      array (
      0 => 
      DosarParte::__set_state(array(
       'nume' => 'NEGOIŢĂ LAURA MARIA', 
       'calitateParte' => 'Contestator', 
      )), 
     ), 
     )), 
     'sedinte' => 
     ArrayOfDosarSedinta::__set_state(array(
      'DosarSedinta' => 
      array (
      0 => 
      DosarSedinta::__set_state(array(
       'complet' => 'JDL(C)3', 
       'data' => '2015-05-04T00:00:00', 
       'ora' => '10:00', 
       'solutie' => 'Respins', 
       'solutieSumar' => ' 
    Respinge contestaţia declarată de inculpata Negoiţă Laura Maria împotriva încheierii de şedinţă din data de 1 mai 2015 pronunţată de Judecătorul de Drepturi şi Libertăţi de la Tribunalul pentru Minori şi Familie Braşov, în dosar nr. 359/1372/2014, pe care o menţine. 
    Obligă inculpata să plătească statului suma de 100 lei cu titlu de cheltuieli judiciare. 
    Definitivă. 
    Pronunţată în camera de consiliu, azi 4 mai 2015. 
', 
       'dataPronuntare' => '2015-05-04T00:00:00', 
       'documentSedinta' => 'incheierefinaladezinvestire', 
       'numarDocument' => '48/2015', 
       'dataDocument' => '2015-05-04T00:00:00', 
      )), 
     ), 
     )), 
     'caiAtac' => NULL, 
     'numar' => '229/64/2015', 
     'numarVechi' => '', 
     'data' => '2015-05-01T18:29:00', 
     'institutie' => 'CurteadeApelBRASOV', 
     'departament' => 'Secţia Penală', 
     'categorieCaz' => 'Penal', 
     'stadiuProcesual' => 'ContestaţieNCPP', 
     'obiect' => 'audierea inculpatului arestat în lipsă (art.231 NCPP)', 
     'dataModificare' => '2015-05-04T15:01:24.613', 
     'categorieCazNume' => 'Penal', 
     'stadiuProcesualNume' => 'Contestaţie(NCPP)', 
    )), 
     1 => 
     Dosar::__set_state(array(
     'parti' => 
     ArrayOfDosarParte::__set_state(array(
      'DosarParte' => 
      array (
      0 => 
      DosarParte::__set_state(array(
       'nume' => 'VULCAN HORAÅ¢IU-ADRIAN', 
       'calitateParte' => 'Contestator Inculpat', 
      )), 
      1 => 
      DosarParte::__set_state(array(
       'nume' => 'HANGHICEL MARIUS-FLORIN', 
       'calitateParte' => 'Contestator Inculpat', 
      )), 
      2 => 
      DosarParte::__set_state(array(
       'nume' => 'PÃŽRÅ¢AC ANDREI', 
       'calitateParte' => 'Contestator Inculpat', 
      )), 
      3 => 
      DosarParte::__set_state(array(
       'nume' => 'URDEA EMIL', 
       'calitateParte' => 'Intimat Inculpat', 
      )), 
      4 => 
      DosarParte::__set_state(array(
       'nume' => 'PARCHETUL DE PE LÂNGĂ ÎNALTA CURTE DE CASAŢIE ŞI JUSTIŢIE - D.I.I.C.O.T. - SERVICIUL TERITORIAL BRAŞOV', 
       'calitateParte' => 'Contestator', 
      )), 
     ), 
     )), 
     'sedinte' => 
     ArrayOfDosarSedinta::__set_state(array(
      'DosarSedinta' => 
      array (
      0 => 
      DosarSedinta::__set_state(array(
       'complet' => 'JDL(C)10', 
       'data' => '2015-05-04T00:00:00', 
       'ora' => '9:00', 
       'solutie' => 'Admis', 
       'solutieSumar' => ' În baza art. 204 Cod procedură penală şi art. 425 indice 1 alineat 7 punct 2 litera a Cod de procedură penală admite contestaţia formulată de Parchetul de pe lângă Înalta Curte de Casaţie şi Justiţie - DIICOT- Serviciul Teritorial Braşov împotriva încheierii nr. 46/UP/30.04.2015 pronunţată de judecătorul de drepturi şi libertăţi din cadrul Tribunalului Braşov în dosarul penal nr. 1820/62/2015, pe care o desfiinţează cu privire la soluţionarea propunerii de arestare preventivă în ceea ce-l priveşte pe inculpatul Urdea Emil. 
Rejudecând în aceste limite: 
În baza art. 204 alineat 10 şi art. 226 Cod de procedură penală admite propunerea de arestare preventivă formulată de Parchetul de pe lângă Înalta Curte de Casaţie şi Justiţie - DIICOT- Serviciul Teritorial Braşov şi în consecinţă, în baza art. 202 alineat 1, 3 şi 4 litera e Cod de procedură penală, art. 223 alineat 2 teza a II a Cod de procedură penală dispune arestarea preventivă pe o durată de 30 de zile, începând cu data punerii în executare a mandatului de arestare preventivă, a inculpatului Urdea Emil. Dispune emiterea mandatului de arestare preventivă a inculpatului Urdea Emil. 
În baza art. 425 indice 1 alineat 7 punct 1 litera b Cod de procedură penală respinge ca nefondate contestaţiile formulate de inculpaţii Vulcan Horaţiu Adrian, Pîrţac Andrei şi Hanghicel Marius Florin împotriva încheierii nr. 46/UP/30.04.2015 pronunţată de judecătorul de drepturi şi libertăţi din cadrul Tribunalului Braşov în dosarul penal nr. 1820/62/2015 şi menţine dispoziţiile referitoare la aceşti inculpaţi. 
În baza art. 275 alineat 2 Cod de procedură penală obligă inculpaţii Vulcan Horaţiu Adrian, Pîrţac Andrei şi Hanghicel Marius Florin la plata fiecare a sumei de 100 de lei reprezentând cheltuieli judiciare avansate de stat, restul cheltuielilor avansate de stat rămânând în sarcina acestuia. 
Definitivă. 
    Pronunţată în şedinţă camerei de consiliu azi, 04.05.2015 
', 
       'dataPronuntare' => '2015-05-04T00:00:00', 
       'documentSedinta' => 'incheierefinaladezinvestire', 
       'numarDocument' => '50/2015', 
       'dataDocument' => '2015-05-04T00:00:00', 
      )), 
     ), 
     )), 
     'caiAtac' => 
     ArrayOfDosarCaleAtac::__set_state(array(
      'DosarCaleAtac' => 
      array (
      0 => 
      DosarCaleAtac::__set_state(array(
       'dataDeclarare' => '2015-04-30T00:00:00', 
       'parteDeclaratoare' => '', 
       'tipCaleAtac' => 'Contestaţie(NCPP)', 
      )), 
      1 => 
      DosarCaleAtac::__set_state(array(
       'dataDeclarare' => '2015-04-30T00:00:00', 
       'parteDeclaratoare' => ' HANGHICEL MARIUS-FLORIN, PÃŽRÅ¢AC ANDREI, VULCAN HORAÅ¢IU-ADRIAN, ', 
       'tipCaleAtac' => 'Contestaţie(NCPP)', 
      )), 
     ), 
     )), 
     'numar' => '1820/62/2015', 
     'numarVechi' => '', 
     'data' => '2015-05-01T15:13:00', 
     'institutie' => 'CurteadeApelBRASOV', 
     'departament' => 'Secţia Penală', 
     'categorieCaz' => 'Penal', 
     'stadiuProcesual' => 'ContestaţieNCPP', 
     'obiect' => 'luarea măsurii arestării preventive propusă de DNA/DIICOT (art.223 NCPP)', 
     'dataModificare' => '2015-06-15T10:10:12.637', 
     'categorieCazNume' => 'Penal', 
     'stadiuProcesualNume' => 'Contestaţie(NCPP)', 
    )), 
    ), 
)), 
))  
+1

może to być coś do pracy, ale jak już mówiłem, nigdy nie używany SOAP więc nie mam pojęcia o tym, co i gdzie umieścić, jak skonfigurować i tak dalej. Zacząłem czytać i zaglądać do tego, co oferowałeś, ale nadal ... :( – Alin

+1

@Alin, wszystko to jest mydło to metoda wywoływania funkcji na innej maszynie i otrzymywania wyników z powrotem do użycia na twoim. Większość języków ma konstrukcję abstrahować tę część problemu, więc naprawdę jej nie widać.Bez względu na to, z jakim systemem idziesz, w końcu wywołujesz funkcję lub metodę obiektu, jakby to była twoja własność. Dodałem przykład użycia biblioteki wsdl2php do usunięcia problemu z SOAP. Powoduje to powrót problemu do domeny zajmującej się standardowymi obiektami PHP i wywołaniami metod. Mam nadzieję, że to pomoże. =) – jpheldson

+1

Przetestuję to dziś wieczorem, dziękuję !!! – Alin

1

spróbować zbadać ten link, aby połączyć się z API usługi Web za pomocą PHP

http://help.exacttarget.com/en/technical_library/web_service_guide/getting_started_developers_and_the_exacttarget_api/connecting_to_the_api_using_php/ 

i zamiast podanego adresu URL

$wsdl = 'https://webservice.exacttarget.com/etframework.wsdl'; 

zastąpić

$wsdl = 'http://portalquery.just.ro/query.asmx?WSDL';