我正在使用asmx web服务并通过ajax调用它
$.ajax({ url: 'xxxxxxx.asmx/Getxxxxxxxx', method: 'post', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (data) { $(data.d).each(function (index, category) {
我的服务返回一个对象列表。我正在阅读如何压缩Web服务的响应,在我看来,要做到这一点,我需要覆盖GetWebRequest方法并使用Gzip / Deflate(在从Web服务代理类派生的类中)。
下一步是使用此类的实例(覆盖GetWebRequest)并在应用程序中使用它。
因为,我正在使用ajax调用,我不知道如何使用这个覆盖GetWebRequest方法的类实例。
谢谢。
答案 0 :(得分:0)
为了将压缩响应发送到客户端,您必须使用内容编码字段并将其值设置为压缩。
content-encoding: gzip
但是,在此之前你必须检查" Accept-Encoding"的价值。标头由客户端发送。此标头的可能值为
Accept-Encoding: compress, gzip
Accept-Encoding:
Accept-Encoding: *
Accept-Encoding: compress;q=0.5, gzip;q=1.0
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0
无论您使用何种语言/技术,上述指南均适用。
有关HTTP协议标头的更多信息,请参阅
https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
修改强>
"接受编码"必须在您的ajax请求中设置请求标头。您可以通过设置"标题"在你的ajax请求中如下:
$.ajax({
url: 'xxxxxxx.asmx/Getxxxxxxxx',
method: 'post',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
headers: {
"My-First-Header":"first value",
"My-Second-Header":"second value"
}
success: function (data) {}
});