我正在尝试使用带有 HTTP_Request2 包的 PHP 将 SOAP 请求发布到 Oracle 数据库。看起来我得到了回应,但这不是我期望的回应。
我发出请求的代码如下:
$request = new HTTP_Request2();
$request->setUrl($wsdl);
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'text/xml'
));
$request->setAuth('interface', 'Welcome2',);
$request->setBody('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/cdm/foundation/parties/customerAccountService/applicationModule/types/" xmlns:typ1="http://xmlns.oracle.com/adf/svc/types/"> <soapenv:Header/> <soapenv:Body> <typ:findCustomerAccount> <typ:findCriteria> <typ1:fetchStart>0</typ1:fetchStart> <typ1:fetchSize>1</typ1:fetchSize> <typ1:filter> <typ1:group> <typ1:item> <typ1:attribute>AccountNumber</typ1:attribute> <typ1:operator>STARTSWITH</typ1:operator> <typ1:value>UAT</typ1:value> </typ1:item> </typ1:group> </typ1:filter> </typ:findCriteria> <typ:findControl> <typ1:retrieveAllTranslations>false</typ1:retrieveAllTranslations> </typ:findControl> </typ:findCustomerAccount> </soapenv:Body> </soapenv:Envelope>');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
如果我只是在响应中使用 getBody 方法,我会收到以下输出: 在此处输出图像
如果我将 echo 切换到 var_dump 以更好地查看对象中的内容,它会在分解之前变得更有用:Var_Dump 结果