Saya terbiasa menulis kode PHP, tetapi tidak sering menggunakan pengkodean Object-Oriented. Saya sekarang perlu berinteraksi dengan SOAP (sebagai klien) dan saya tidak bisa mendapatkan sintaks yang benar. Saya punya file WSDL yang memungkinkan saya untuk mengatur koneksi baru dengan benar menggunakan kelas SoapClient. Namun, saya tidak dapat benar-benar melakukan panggilan yang benar dan mendapatkan kembali data. Saya perlu mengirim data berikut (disederhanakan):
- ID kontak
- Nama Kontak
- Gambaran umum
- Jumlah
Ada dua fungsi yang didefinisikan dalam dokumen WSDL, tetapi saya hanya perlu satu ("FirstFunction" di bawah). Berikut ini skrip yang saya jalankan untuk mendapatkan informasi tentang fungsi dan tipe yang tersedia:
$client = new SoapClient("http://example.com/webservices?wsdl");
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
Dan inilah output yang dihasilkannya:
array(
[0] => "FirstFunction Function1(FirstFunction $parameters)",
[1] => "SecondFunction Function2(SecondFunction $parameters)",
);
array(
[0] => struct Contact {
id id;
name name;
}
[1] => string "string description"
[2] => string "int amount"
}
Katakanlah saya ingin melakukan panggilan ke FirstFunction dengan data:
- ID Kontak: 100
- Nama Kontak: John
- Deskripsi Umum: Barel Minyak
- Jumlah: 500
Apa sintaks yang tepat? Saya sudah mencoba segala macam pilihan tetapi tampaknya struktur sabunnya cukup fleksibel sehingga ada banyak cara untuk melakukan ini. Tidak dapat menemukannya dari manual juga ...
PEMBARUAN 1: mencoba sampel dari MMK:
$client = new SoapClient("http://example.com/webservices?wsdl");
$params = array(
"id" => 100,
"name" => "John",
"description" => "Barrel of Oil",
"amount" => 500,
);
$response = $client->__soapCall("Function1", array($params));
Tapi aku mendapatkan respons ini: Object has no 'Contact' property
. Seperti yang Anda lihat di output dari getTypes()
, ada yang struct
dipanggil Contact
, jadi saya kira saya entah bagaimana harus menjelaskan parameter saya termasuk data Kontak, tetapi pertanyaannya adalah: bagaimana?
UPDATE 2: Saya juga mencoba struktur ini, kesalahan yang sama.
$params = array(
array(
"id" => 100,
"name" => "John",
),
"Barrel of Oil",
500,
);
Sebaik:
$params = array(
"Contact" => array(
"id" => 100,
"name" => "John",
),
"description" => "Barrel of Oil",
"amount" => 500,
);
Kesalahan dalam kedua kasus: Objek tidak memiliki properti 'Kontak'`