2015-06-27 16 views
5

Tôi chưa bao giờ sử dụng SOAP trước (và vẫn sẽ không có nếu không cần) nhưng tôi cần thực hiện tìm kiếm đầu vào để liệt kê thông tin (với sự trợ giúp của php hoặc javascript) từ một dịch vụ web sử dụng SOAP và tôi có this Query, các XML Service Deschiption và địa chỉ phương pháp:Sử dụng PHP để liệt kê thông tin từ một Dịch vụ Web đang sử dụng SOAP

{AdresaInterfata}?op= CautareDosare 

và phương pháp này nguyên mẫu:

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

      ) 

... và tôi về cơ bản không biết ở đâu để bắt đầu hoặc phải làm gì để kết hợp chúng lại với nhau. Dịch vụ web này chứa thông tin của tất cả các tập tin công lý và trạng thái/cập nhật của họ, v.v. An example hoạt động trên trang web của riêng họ.

Trả lời

8

Hạnh phúc cho bạn, đây là một vấn đề đã được nhiều người giải quyết trước bạn, vì vậy bạn có thể hưởng lợi từ công việc của họ.

Tôi đã có rất nhiều thành công với dự án này: https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

(đóng gói cho nhà soạn nhạc ở đây: https://packagist.org/packages/wsdl2phpgenerator/wsdl2phpgenerator)

Nó có một lớp học mà bạn có thể sử dụng để tạo ra các lớp SOAP client trong PHP từ một WSDL. Về cơ bản, nó viết mã cho bạn mà bạn có thể sử dụng để thực hiện các cuộc gọi SOAP của bạn, trừu tượng hóa hiệu quả toàn bộ vấn đề này. Họ có tài liệu khá tốt là tốt. Nếu bạn đang tìm kiếm một điểm khởi đầu, đó có thể là một điểm tốt vì nó thực hiện rất nhiều công việc cho bạn.

Nếu bạn muốn bắt đầu ở mức độ thấp hơn, bạn có thể kiểm tra lớp SoapClient PHP: http://php.net/manual/en/class.soapclient.php

Wsdl2Php Ví dụ

Dưới đây là một kịch bản tôi đã ném lại với nhau mà tạo ra các mã cần thiết:

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

Sau đó, tôi chạy tập lệnh đó từ dòng lệnh và sau đó chuyển đến "/ path/for/generated/code" để tìm các lớp được tạo.

Từ đó tôi tạo ra các kịch bản sau đây:

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

nào mang lại kết quả như sau:

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

Đây có thể là một cái gì đó để làm việc với nhưng, như tôi đã nói, tôi không bao giờ sử dụng SOAP do đó tôi không có ý tưởng về những gì và nơi để đặt, làm thế nào để cấu hình và vân vân. Tôi bắt đầu đọc và nhìn vào những gì bạn cung cấp nhưng vẫn ... :( – Alin

+1

@Alin, tất cả xà phòng là một phương pháp gọi một chức năng trên một máy khác, và nhận được kết quả để sử dụng trên máy của bạn. để trừu tượng hóa một phần của vấn đề đi, do đó bạn thậm chí không thực sự nhìn thấy nó.Với bất kỳ hệ thống nào bạn đi cùng, bạn sẽ gọi một hàm hoặc phương thức đối tượng như thể nó là của riêng bạn. Tôi đã thêm một ví dụ về việc sử dụng thư viện wsdl2php để trừu tượng hóa vấn đề SOAP của bạn. Điều này đưa vấn đề trở lại vào miền đối phó với các đối tượng PHP tiêu chuẩn và các cuộc gọi phương thức. Tôi hi vọng cái này giúp được. =) – jpheldson

+1

Sẽ kiểm tra tối nay, cảm ơn bạn !!! – Alin

1

cố gắng để khám phá liên kết này, để kết nối với API Web Service sử dụng PHP

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

và thay cho url bên dưới

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

thay thế với

$wsdl = 'http://portalquery.just.ro/query.asmx?WSDL'; 
Các vấn đề liên quan