Web服务呼叫返回

时间:2016-08-15 18:51:13

标签: php web-services soap request response

我正在测试不同Web Service调用的性能,并想知道如何指定响应中返回的字段。我认为如果只查询某些字段,则会返回较少的信息,因此响应时间会更快。我怎样才能以这种格式实现这一目标?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 

xmlns:ns="http://schemas.hp.com/SM/7" xmlns:com="http://schemas.hp.com/SM/7/Common" xmlns:xm="http://www.w3.org/2005/05/xmlmime">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:RetrieveChangeTaskListRequest>
         <ns:model>

        <ns:keys query="AssignedTo = &quot;drake&quot; and planned.start &gt; '03/01/2016' and planned.start &lt; tod()" ></ns:keys>
        <ns:instance></ns:instance>

     </ns:model>
  </ns:RetrieveChangeTaskListRequest>
</soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:0)

你不能用SOAP做什么,因为它返回所有字段完整的完整对象。

但是,如果要缩小有效负载大小,可以尝试启用gzip压缩,如果Web服务器支持它,您将获得一个很好的微小响应。实例化soapclient,如:

$soapclient = new SoapClient($uri, array(
  'soap_version'  => SOAP_1_1,
  'trace' => 1,
  'exceptions' => true,
  'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP
  )
);

然后,您可以通过对请求执行$soapclient->__getLastRequestHeaders()以及为响应$soapclient->__getLastResponseHeaders()来检查标头以查看响应是否已压缩。

在请求标头中,您应该看到:Accept-Encoding: gzip, deflate和响应标头:Content-Encoding: gzip以及Transfer-Encoding: chunked,您知道它有效。