我正在测试不同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 = "drake" and planned.start > '03/01/2016' and planned.start < tod()" ></ns:keys>
<ns:instance></ns:instance>
</ns:model>
</ns:RetrieveChangeTaskListRequest>
</soapenv:Body>
</soapenv:Envelope>
答案 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
,您知道它有效。