我从供应商API获得以下内容:
我需要使用php创建一个Soap调用。我该怎么做呢? 到目前为止我有这个:但它不起作用:
private function booking_soap_connect() {
// the wsdl URL of your service to test
$serviceWsdl = 'https://apitest.com/bookingapi.asmx?WSDL';
// the parmeters to initialize the client with
$serviceParams = array(
'login' => 'un',
'password' => 'pw'
);
// create the SOAP client
$client = new SoapClient($serviceWsdl, $serviceParams);
$data['Brand'] = "All";
$data['TourCode'] = "QBE";
$data['DepartureCode'] = "8000321";
$data['VendorId'] = "test";
$data['VendorPassword'] = "test";
$results = $client->GVI_DepartureInfo($data)
echo $results;
}
请帮忙
答案 0 :(得分:8)
解决:我终于得到了以下代码:
class WsseAuthHeader extends SoapHeader {
private $wss_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
function __construct($user, $pass, $ns = null) {
if ($ns) {
$this->wss_ns = $ns;
}
$auth = new stdClass();
$auth->Username = new SoapVar($user, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$auth->Password = new SoapVar($pass, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$username_token = new stdClass();
$username_token->UsernameToken = new SoapVar($auth, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns);
$security_sv = new SoapVar(
new SoapVar($username_token, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns), SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'Security', $this->wss_ns);
parent::__construct($this->wss_ns, 'Security', $security_sv, true);
}
}
$username = 'test';
$password = 'test123';
$wsdl = 'https://yoururl.com/api.asmx?WSDL';
$wsse_header = new WsseAuthHeader($username, $password);
$client = new SoapClient($wsdl, array(
//"trace" => 1,
//"exceptions" => 0
)
);
$client->__setSoapHeaders(array($wsse_header));
$request = array(
"functionResponseName" => array(
'param1' => "string",
"param2" => "string"
)
);
$results = $client->FunctionName($request);
var_dump($results);
答案 1 :(得分:-1)
使用Nusoap代替您的Soap客户端可能无法使用您的php版本。
答案 2 :(得分:-1)
在Send XML with php via post看看我之前的回答。应该有你在php中处理SOAP所需的一切。