如何在ajax调用中压缩Web服务响应json

时间:2016-09-02 03:48:03

标签: json ajax web-services compression

我正在使用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方法的类实例。

谢谢。

1 个答案:

答案 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) {}
  });