【问题标题】:How to compress web service response json in ajax call如何在ajax调用中压缩Web服务响应json
【发布时间】:2017-01-10 01:48:04
【问题描述】:

我正在使用 asmx 网络服务并通过 ajax as 调用它

$.ajax({ url: 'xxxxxxx.asmx/Getxxxxxxxx', 方法:'发布', 内容类型:'应用程序/json;字符集=utf-8', 数据类型:'json', 成功:函数(数据){ $(data.d).each(function (index, category) {

我的服务返回一个对象列表。我正在阅读如何压缩 Web 服务的响应,在我看来,要做到这一点,我需要重写 GetWebRequest 方法并使用 Gzip/Deflate(在从 Web 服务代理类派生的类中)。

下一步是使用这个类的一个实例(它覆盖 GetWebRequest)并在应用程序中使用它。

由于我使用的是 ajax 调用,我不确定如何使用这个覆盖 GetWebRequest 方法的类实例。

谢谢。

【问题讨论】:

标签: json ajax web-services compression


【解决方案1】:

为了从您的网络服务向客户端发送压缩响应,您必须使用内容编码字段并将其值设置为压缩。

   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 请求中设置“Accept-Encoding”请求标头。您可以通过在 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) {}
  });

【讨论】:

  • 那么,这是否意味着在发送请求时我需要提及 'Accept-Encoding: compress, gzip' 然后 web 服务响应应该包含 'content-encoding: gzip' ?我仍然不知道该怎么做。
  • 感谢您的编辑。我将如何在响应中强制执行 content-coding: gzip?
  • 有几种不同的方法可以做到这一点。这取决于您使用的服务平台和应用服务器。因此,如果不了解有关您的服务的更多详细信息,我无法直截了当地告诉您。
  • 我正在使用 Visual Studio 2015。我的网站基于带有 asmx Web 服务的 asp.net webforms。语言是 c#,我在 windows 服务器上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
相关资源
最近更新 更多