如何从SOAP响应中删除HTTP标头

时间:2015-12-01 12:46:53

标签: php symfony soap

我目前正在与Kashflow集成并使用SOAP调用从我的Symfony2站点向我的Kashflow帐户发送客户数据,它应该返回新客户的ID - 我需要这个以便将其保存在我的数据库中端。

然而,在返回时,我得到HTTP标头而不仅仅是ID,这意味着它不会将其插入数据库,因为它需要是一个整数。

以下是SOAP响应:

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <InsertCustomerResponse xmlns="KashFlow">
      <InsertCustomerResult>int</InsertCustomerResult>
      <Status>string</Status>
      <StatusDetail>string</StatusDetail>
    </InsertCustomerResponse>
  </soap12:Body>
</soap12:Envelope>

我正在尝试使用以下方法检索新ID:

return new Response((int)$response->soapBody->InsertCustomerResponse->InsertCustomerResult);

但即使ID确实被返回,它也会向上方吐出HTTP标头。有没有办法删除这个?我尝试过像这样使用preg_replace(其中$ return是SOAP调用的响应):

preg_replace('/((.*)\n)*(\d+)$/','$1',$return);

但它只是返回一个空白。

有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我意识到我必须在返回时使用getContent()以获取我需要的数据。

所以:

$response = $response->soapBody->InsertCustomerResponse->InsertCustomerResult;

return $response->getContent();

然后只获取我需要的数据,而不是标题。