Server sabun php mendapatkan permintaan xml

Laminas\Soap\Server_ menyediakan pembungkus di sekitar implementasi SoapServer PHP dengan fungsionalitas kenyamanan untuk menghasilkan WSDL dan mendaftarkan penangan internal

Ini dapat digunakan dalam mode WSDL atau non-WSDL, dan dapat memetakan fungsionalitas ke kelas atau fungsi PHP untuk menentukan API layanan web Anda

Saat dalam mode WSDL, ia menggunakan dokumen WSDL yang telah disiapkan untuk menentukan perilaku objek server dan opsi lapisan transport

Dokumen WSDL dapat dihasilkan secara otomatis dengan fungsionalitas yang disediakan oleh komponen Laminas\Soap\AutoDiscover, atau dibuat secara manual menggunakan kelas Laminas\Soap\Wsdl atau alat pembuatan XML lainnya

Jika mode non-WSDL digunakan, maka semua opsi protokol harus disediakan melalui mekanisme opsi

Instansiasi Laminas\Soap\Server

Instansiasi Server instans bervariasi berdasarkan apakah Anda menggunakan mode WSDL atau tidak

Opsi tersedia di salah satu mode

  • parse_huge (sejak 2. 7. 0). saat disetel ke boolean true, pastikan flag LIBXML_PARSEHUGE diteruskan ke
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    0 saat menangani permintaan masuk. Ini dapat menyelesaikan masalah dengan menerima muatan besar

Instansiasi untuk mode WSDL

Saat dalam mode WSDL, konstruktor mengharapkan dua parameter opsional

  • /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    _1. URI dari file WSDL. Ini dapat diatur setelah fakta menggunakan
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    2
  • /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    _3. opsi untuk digunakan saat membuat instance. Ini dapat diatur nanti menggunakan
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    4

Opsi berikut dikenali dalam mode WSDL

  • /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    5 (
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    6) - versi sabun untuk digunakan (
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    7 atau
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    8)
  • /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    _9 - aktor URI untuk server
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    0 (
    $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    1) yang dapat digunakan untuk memetakan beberapa tipe WSDL ke kelas PHP. Opsi harus berupa array dengan tipe WSDL sebagai kunci, dan nama kelas PHP sebagai nilai
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    _2 - pengkodean karakter internal (UTF-8 selalu digunakan sebagai pengkodean eksternal)
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    _3 - setara dengan menelepon
    $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    4

Instansiasi untuk mode non-WSDL

Parameter konstruktor pertama harus disetel ke

$server = new Laminas\Soap\Server(/* .. */);

// Set request using optional $request parameter to the handle() method:
$server->handle($request);

// Set request using setRequest() method:
$server->setRequest();
$server->handle();
5 jika Anda berencana untuk menggunakan fungsionalitas Laminas\Soap\Server dalam mode non-WSDL

Anda juga harus menyetel opsi

$server = new Laminas\Soap\Server(/* .. */);

// Set request using optional $request parameter to the handle() method:
$server->handle($request);

// Set request using setRequest() method:
$server->setRequest();
$server->handle();
_7 dalam hal ini (lihat di bawah)

Parameter konstruktor kedua,

/**
 * This function ...
 *
 * @param integer $inputParam
 * @return string
 */
function function1($inputParam)
{
    // ...
}

/**
 * This function ...
 *
 * @param integer $inputParam1
 * @param string  $inputParam2
 * @return float
 */
function function2($inputParam1, $inputParam2)
{
    // ...
}

$server = new Laminas\Soap\Server(null, $options);
$server->addFunction('function1');
$server->addFunction('function2');

$server->handle();
3, adalah serangkaian opsi untuk mengonfigurasi perilaku server; . Opsi yang dikenali dalam mode non-WSDL termasuk

  • /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    5 (
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    6) - versi sabun untuk digunakan (
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    7 atau
    /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    8)
  • /**
     * This function ...
     *
     * @param integer $inputParam
     * @return string
     */
    function function1($inputParam)
    {
        // ...
    }
    
    /**
     * This function ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    function function2($inputParam1, $inputParam2)
    {
        // ...
    }
    
    $server = new Laminas\Soap\Server(null, $options);
    $server->addFunction('function1');
    $server->addFunction('function2');
    
    $server->handle();
    _9 - aktor URI untuk server
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    0 (
    $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    1) - array asosiatif yang digunakan untuk memetakan tipe WSDL ke kelas PHP. Opsi harus berupa array asosiatif menggunakan tipe WSDL sebagai kunci, dan nama kelas PHP sebagai nilai
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    _2 - pengkodean karakter internal (UTF-8 selalu digunakan sebagai pengkodean eksternal)
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Set request using optional $request parameter to the handle() method:
    $server->handle($request);
    
    // Set request using setRequest() method:
    $server->setRequest();
    $server->handle();
    _7 (wajib) - ruang nama URI untuk server SOAP

Menentukan API SOAP Anda

Ada dua cara untuk mendefinisikan API SOAP Anda untuk mengekspos fungsionalitas PHP

Yang pertama adalah melampirkan kelas ke objek Laminas\Soap\Server yang sepenuhnya menjelaskan API Anda

class MyClass
{
    /**
     * This method takes ...
     *
     * @param integer $inputParam
     * @return string
     */
    public function method1($inputParam)
    {
        // ...
    }

    /**
     * This method takes ...
     *
     * @param integer $inputParam1
     * @param string  $inputParam2
     * @return float
     */
    public function method2($inputParam1, $inputParam2)
    {
        // ...
    }

    /* .. */
}

$server = new Laminas\Soap\Server(null, $options);

// Bind class to Soap Server:
$server->setClass(MyClass::class);

// Or bind an instance:
$server->setObject(new MyClass());

// Handle a request:
$server->handle();

Docblock diperlukan

Anda harus benar-benar menjelaskan setiap metode menggunakan metode docblock jika Anda berencana menggunakan fungsionalitas penemuan otomatis untuk mempersiapkan WSDL Anda

Metode kedua untuk mendefinisikan API Anda adalah menggunakan satu atau beberapa fungsi, meneruskannya ke satu atau lebih metode

$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
0 atau
$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
1

/**
 * This function ...
 *
 * @param integer $inputParam
 * @return string
 */
function function1($inputParam)
{
    // ...
}

/**
 * This function ...
 *
 * @param integer $inputParam1
 * @param string  $inputParam2
 * @return float
 */
function function2($inputParam1, $inputParam2)
{
    // ...
}

$server = new Laminas\Soap\Server(null, $options);
$server->addFunction('function1');
$server->addFunction('function2');

$server->handle();

Penanganan permintaan dan tanggapan

Laminas\Soap\Server komponen melakukan pemrosesan permintaan/respons secara otomatis, tetapi memungkinkan Anda mencegat masing-masing untuk melakukan pra- atau pasca-pemrosesan

Permintaan sebelum dan sesudah pemrosesan

Metode

$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
_3 menangani permintaan dari aliran input standar ('php. //memasukkan'). Ini dapat diganti dengan menyediakan instance permintaan ke metode
$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
4, atau dengan menyetel permintaan melalui metode
$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
5

$server = new Laminas\Soap\Server(/* .. */);

// Set request using optional $request parameter to the handle() method:
$server->handle($request);

// Set request using setRequest() method:
$server->setRequest();
$server->handle();

Objek permintaan dapat direpresentasikan menggunakan salah satu dari berikut ini, dan ditangani sebagai berikut

  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Get a response as a return value of handle(),
    // instead of emitting it to standard output:
    $server->setReturnResponse(true);
    
    $response = $server->handle();
    
    if ($response instanceof SoapFault) {
        /* .. */
    } else {
        /* .. */
    }
    6 (ditampilkan ke XML)
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Get a response as a return value of handle(),
    // instead of emitting it to standard output:
    $server->setReturnResponse(true);
    
    $response = $server->handle();
    
    if ($response instanceof SoapFault) {
        /* .. */
    } else {
        /* .. */
    }
    7 (dokumen pemilik diambil dan dilemparkan ke XML)
  • $server = new Laminas\Soap\Server(/* .. */);
    
    // Get a response as a return value of handle(),
    // instead of emitting it to standard output:
    $server->setReturnResponse(true);
    
    $response = $server->handle();
    
    if ($response instanceof SoapFault) {
        /* .. */
    } else {
        /* .. */
    }
    8 (ditampilkan ke XML)
  • ________29______9 (
    $server = new Laminas\Soap\Server(/* .. */);
    
    $server->handle();
    
    $response = $server->getResponse();
    
    if ($response instanceof SoapFault) {
        /* .. */
    } else {
        /* .. */
    }
    0 dipanggil dan diverifikasi sebagai XML yang valid)
  • $server = new Laminas\Soap\Server(/* .. */);
    
    $server->handle();
    
    $response = $server->getResponse();
    
    if ($response instanceof SoapFault) {
        /* .. */
    } else {
        /* .. */
    }
    1 (diverifikasi sebagai XML yang valid)

Permintaan terakhir yang diproses dapat diambil menggunakan metode

$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
2, yang mengembalikan string XML

$server = new Laminas\Soap\Server(/* .. */);

$server->handle();
$request = $server->getLastRequest();

Tanggapan pasca-pemrosesan

Metode

$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
_3 secara otomatis memancarkan respons yang dihasilkan ke aliran keluaran. Mungkin diblokir menggunakan
$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
_4 dengan
$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
5 atau
$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
6 sebagai parameter. Saat disetel ke
$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
5,
$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
4 akan mengembalikan respons yang dihasilkan alih-alih memancarkannya

Respons yang dikembalikan akan berupa string XML yang mewakili respons, atau contoh pengecualian

$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}
9

Jangan kembalikan SoapFaults

Contoh SoapFault, saat dilemparkan ke string, akan berisi jejak tumpukan pengecualian penuh. Demi keamanan, Anda tidak ingin mengembalikan informasi tersebut. Karena itu, periksa jenis pengembalian Anda sebelum mengirimkan respons secara manual

$server = new Laminas\Soap\Server(/* .. */);

// Get a response as a return value of handle(),
// instead of emitting it to standard output:
$server->setReturnResponse(true);

$response = $server->handle();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}

Tanggapan terakhir yang dikeluarkan juga dapat diambil untuk pasca-pemrosesan menggunakan Laminas\Soap\Server0

$server = new Laminas\Soap\Server(/* .. */);

$server->handle();

$response = $server->getResponse();

if ($response instanceof SoapFault) {
    /* .. */
} else {
    /* .. */
}

Penanganan WSDL Dokumen/Literal

Pola gaya pengikatan/pengkodean dokumen/literal digunakan untuk membuat pesan SOAP dapat dibaca manusia sebanyak mungkin dan memungkinkan abstraksi antara bahasa yang sangat tidak kompatibel. Itu. Kerangka .NET menggunakan pola ini untuk pembuatan layanan SOAP secara default. Konsep sentral dari pendekatan SOAP ini adalah pengenalan objek Permintaan dan Respons untuk setiap fungsi/metode layanan SOAP. Parameter fungsi adalah properti pada objek permintaan, dan objek respons berisi satu parameter yang dibangun dengan gaya Laminas\Soap\Server1

laminas-soap mendukung pola ini di komponen AutoDiscover dan Server. Anda dapat menulis objek layanan Anda tanpa mengetahui polanya. Gunakan komentar docblock untuk mengisyaratkan parameter dan mengembalikan jenis seperti biasa. Laminas\Soap\Server_2 membungkus objek layanan Anda dan mengubah permintaan dan respons menjadi panggilan metode normal pada layanan Anda

Bagaimana cara mengirim data XML dalam permintaan SOAP PHP?

Untuk membuat permintaan SOAP ke titik akhir SOAP API dengan PHP, gunakan "Content-Type. application/soap+xml" request header , yang memberi tahu server bahwa badan permintaan berisi amplop SOAP. Server memberi tahu klien bahwa ia telah mengembalikan amplop SOAP dengan "Content-Type. tajuk respons aplikasi/sabun+xml".

Bagaimana Anda mengirim data XML dalam permintaan SOAP?

Membuat Kueri SOAP Menggunakan SoapUI dan Pembuat Kueri XML/JSON .
buka proyek baru di SoapUI
pilih layanan
mengujinya dengan nilai tes
salin permintaan xml. .
gunakan sumber data layanan web Anda dan simpan data xml yang dikembalikan dalam file GetCitiesByCountry. xml di file xml sumber data. .
pilih xml yang ingin Anda dapatkan

Apakah SOAP meminta XML?

SOAP menggunakan format data XML untuk mendeklarasikan pesan permintaan dan responsnya , mengandalkan Skema XML dan teknologi lain untuk menerapkan struktur muatannya. Antarmuka Pemrograman Aplikasi (API) publik dan pribadi menggunakan SOAP sebagai antarmuka.

Bagaimana cara memanggil layanan Web SOAP di PHP?

php echo 'Buat dan Konsumsi Layanan SOAP menggunakan PHP'; . //localhost/php-create-soap-service/ctof. wsdl' ); . '. $tanggapan; . '