2015-06-27 10 views
5

Non ho mai usato SOAP prima (e non lo farebbe se non necessario), ma ho bisogno di fare una ricerca di input per elencare le informazioni (con l'aiuto di php o javascript) da un servizio web utilizzando SOAP e ho this Query, il XML Service Deschiption e l'indirizzo metodo:Utilizzare PHP per elencare le informazioni da un servizio Web che utilizza SOAP

{AdresaInterfata}?op= CautareDosare 

e questo metodo prototipo:

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

      ) 

... e io in fondo non so dove per iniziare o cosa fare per metterli insieme. Questo servizio web contiene informazioni su tutti i file di giustizia e il loro stato/aggiornamenti e così via. An example di lavoro è sul proprio sito web.

risposta

8

Fortunatamente per te, questo è un problema che è stato risolto da molti prima di te, quindi puoi trarre beneficio dal loro lavoro.

ho avuto un sacco di successo con questo progetto: https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

(confezionato per il compositore qui: https://packagist.org/packages/wsdl2phpgenerator/wsdl2phpgenerator)

Ha una classe che è possibile utilizzare per generare le classi client SOAP in PHP da un WSDL. Fondamentalmente scrive un codice per te che puoi semplicemente usare per effettuare le tue chiamate SOAP, distruggendo efficacemente l'intero problema. Hanno anche una buona documentazione. Se stai cercando un punto di partenza, potrebbe essere una buona soluzione, visto che fa molto lavoro per te.

Se si preferisce avviare più basso livello, è possibile controllare classe SoapClient di PHP: http://php.net/manual/en/class.soapclient.php

Wsdl2Php Esempio

Ecco uno script che ho buttato insieme che genera il codice necessario:

<?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' 
    )) 
); 

Ho quindi eseguito quello script dalla riga di comando, quindi sono passato a "/ percorso/per/generato/codice" per trovare le classi generate.

Da lì ho creato il seguente script:

<?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> 

che ha prodotto i seguenti risultati:

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

Questo può essere qualcosa su cui lavorare, ma, come ho detto, non ho mai usato SOAP quindi non ho idea su cosa e dove mettere, come configurare e così via. Ho iniziato a leggere e a esaminare ciò che mi hai offerto, ma ancora ... :( – Alin

+1

@Alin, tutto il sapone è un metodo per chiamare una funzione su una macchina diversa e recuperare i risultati da utilizzare sulla tua. La maggior parte delle lingue ha un costrutto per astrarre quella parte del problema, in modo da non vederlo nemmeno realmente.Con qualunque sistema tu vada, finisci per chiamare una funzione o un metodo oggetto come se fosse il tuo. Ho aggiunto un esempio di utilizzo della libreria wsdl2php per astrarre il problema SOAP. Questo riporta il problema nel dominio della gestione degli oggetti PHP standard e delle chiamate ai metodi. Spero che aiuti. =) – jpheldson

+1

testeremo questo stasera, grazie !!! – Alin

1

cercare di esplorare questo link, per connettersi a Web Service API utilizzando PHP

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

e al posto dell'url di seguito

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

sostituirli con

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