Cara menyediakan keperluan dasar/sambungan SOAP API dalam klien SOAP
P粉511896716
2023-08-29 20:09:01
<p>Saya perlu menyambung ke api sabun...Saya telah menggunakan api sabun beberapa kali sekarang, tetapi memandangkan 99% daripada api sedang berehat sekarang, saya tidak menggunakannya selama beberapa tahun</p> ;
<p>Apabila saya memanggil api menggunakan klien sabun, saya mendapat </p>
<pre class="brush:php;toolbar:false;">SOAP-ERROR: Menghuraikan WSDL: Sambungan WSDL diperlukan tidak diketahui 'http://schemas.xmlsoap.org/ws/2004/09/policy'</ pra>
<p>Jadi apabila saya membuka alamat wsdl dalam penyemak imbas (log masuk/kata laluan dilindungi) saya dapat melihat baris ini dalam output xml</p>
<pre class="brush:php;toolbar:false;"><wsdl:definitions xmlns:p1="urn:haixin:all2crm"xmlns:wsp="http://schemas.xmlsoap.org/ ws/2004/09/policy"http://schemas.xmlsoap.org/wsdl/"name="SI_USBPC_REQUEST"
<wsdl:dokumentasi/>
<wsp:UsingPolicy wsdl:required="true"/>
<wsp:Policy wsu:Id="OP_SI_USBPC_REQUEST"/></pre>
<p>Di mana saya memilikinya</p>
<pre class="brush:php;toolbar:false;"><wsp:Policy>
<wsp:PolicyReference URI="#OP_SI_USBPC_REQUEST"/>
</wsp:Dasar></pra>
<p>Apabila saya mencari ralat ini, saya hanya boleh mencari 1 sumber di seluruh internet yang jawapannya adalah untuk mematikan keperluan dasar, iaitu: <kod><wsp:UsingPolicy wsdl:required="false "/> </code> tetapi saya tidak memiliki api, jadi apabila saya mencari nama dasar <kod>OP_SI_USBPC_REQUEST</code> tiada masalah, saya tidak mendapat hasil, jadi saya rasa ini ditetapkan oleh pemilik api Beberapa nama tersuai</p>
<p>Jadi soalan saya ialah patutkah saya membuat polisi dan melampirkannya pada permintaan pelanggan sabun?
Apakah kaitan antara dasar dan sambungan kerana saya mendapat ralat tiada sambungan tetapi jika saya mematikan keperluan dasar ia akan hilang </p>
<p>Adakah terdapat tempat saya boleh memuat turun sambungan? Apakah formatnya...perlukah saya menambahkannya pada permintaan pelanggan sabun? </p>
<p>Atau adakah ia sesuatu yang perlu dipasang pada pelayan? Jika saya menambah sambungan entah bagaimana, adakah ralat akan hilang kerana saya telah menambahkan nama pengguna/kata laluan pada panggilan api, atau adakah ini hanya langkah pertama dan saya harus mengendalikan keperluan dasar selepas itu?</p>
<p>Sebenarnya, saya menggunakan php untuk memanggil api, ini kod saya</p>
<pre class="brush:php;toolbar:false;">$options = [
'log masuk' => 'mlog masuk',
'kata laluan' => 'kata laluan saya',
];
$client = new SoapClient("http://domain:port/dir/wsdl/?p=sa/92130e1ffa97338ba2d1fc026567031d" , $options );</pre>
<p>Jika saya memuat turun xml dan mematikan keperluan untuk fail setempat dan menggunakan alamat fail itu dalam klien sabun, bolehkah saya menggunakan fail itu untuk bercakap dengan api? (Pemahaman saya ialah xml tidak mengandungi sebarang data sebenar, ia hanyalah antara muka/takrifan untuk klien sabun dan saya tidak boleh menggunakan fail tempatan untuk bercakap dengan api dalam talian, atau mungkin saya salah?) < ;/p>
Mesej "Sambungan WSDL diperlukan tidak diketahui" bermaksud SoapClient menemui elemen secara luaran
wsdl:required
属性设置为true
untuk ruang nama WSDL (Seperti yang anda boleh lihat di sini).Jadi, untuk mengelakkan ralat ini, salah satu cara adalah dengan menggantikan
wsdl:required
属性设置为false
.Adalah mustahil untuk memuat turun fail WSDL, mengubah suainya dan menggunakan salinan tempatan. Hanya pastikan untuk digunakan Laluan mutlak, seperti yang ditunjukkan di sini.
Dengan cara ini, "dasar" dalam konteks ini merujuk kepada spesifikasi WS-Policy.