PHP'nin yerleşik sabun işlevlerini kullanarak bir API'ye giriş yapmaya çalışıyorum. Böyle bir sonuç aldım. Bu, API sağlayıcısının gerektirdiği durumdur. Bu, API sağlayıcısının gerektirdiği şeydir. sabun: Zarf SOAP-ENV: Zarf PHP
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Login xmlns="http://tempuri.org/Example/Service1">
<objSecurity>
<WebProviderLoginId>test</WebProviderLoginId>
<WebProviderPassword>test</WebProviderPassword>
<IsAgent>false</IsAgent>
</objSecurity>
<OutPut />
<ErrorMsg />
</Login>
</soap:Body>
</soap:Envelope>
&
, burada işlevlerini kullanarak üretmeyi başardı budur.<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/Example/Service1">
<SOAP-ENV:Body>
<ns1:Login>
<objSecurity>
<WebProviderLoginId>test</WebProviderLoginId>
<WebProviderPassword>test</WebProviderPassword>
<IsAgent>false</IsAgent>
</objSecurity>
<OutPut/>
<ErrorMsg/>
</ns1:Login>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
İstek göndermek için kullandığınız kod İşte.
<?php
class objSecurity {
function objSecurity($s, $i, $f) {
$this->WebProviderLoginId = $s;
$this->WebProviderPassword = $i;
$this->IsAgent = $f;
}
}
class nextObject {
function nextObject($objSecurity) {
$this->objSecurity=$pobjSecurity;
$this->OutPut=NULL;
$this->ErrorMsg=NULL;
}
}
$url = 'http://example.com/sampleapi/test.asmx?WSDL';
$client = new SoapClient($url, array("soap_version" => SOAP_1_1,"trace" => 1));
$struct = new objSecurity('test', 'test', false);
$data = new nextObject($struct);
$soapstruct2 = new SoapVar($data, SOAP_ENC_OBJECT);
print_r(
$client->__soapCall(
"Login",
array(new SoapParam($soapstruct2, "inputStruct"))
)
);
echo $client->__getLastRequest();
?>
Bunlar, bulduğum farklar.
Benim isteğimde xmlns:xsi
eksik.
Gereksinim <soap:Envelope
ile başlar, Ama isteğim <SOAP-ENV:Envelope
ile başlar.
İsteğim için ekstra bir xmlns:ns1
var.
& İşlev adı etiketi ns1:
ile başlar.
Lütfen isteğimi istenen biçimde yapma konusunda bana yardımcı olun.
SOAP hakkında fazla bir şey bilmiyorum ve CakePHP 2.3.0 ile PHP 5.3.13 sürümünü kullanıyorum. Üzgünüm, kötü ingilizcem için.
** Ben sitesi bunun için bekleyen sadece 8 saat sonra burada yayınlanan edilebilir diyor ... :( – KrIsHnA
bunu anladım gibi. Bilmiyorum fikir, beni cevabı ** var, ama Cevap, ama FYI, bu iki XML örneği, iyi bir XML işleyicisinin bakış açısından oldukça fazla eşdeğerdir – JLRishe