相关疑难解决方法(0)

在WebRequest中发送gzip压缩数据?

我有大量的数据(~100k),我的C#app正在安装mod_gzip发送到我的Apache服务器.我正在尝试使用System.IO.Compression.GZipStream首先gzip数据.PHP接收原始的gzip压缩数据,因此Apache并没有像我期望的那样解压缩它.我错过了什么吗?

System.Net.WebRequest req = WebRequest.Create(this.Url);
req.Method = this.Method; // "post"
req.Timeout = this.Timeout;
req.ContentType = "application/x-www-form-urlencoded";
req.Headers.Add("Content-Encoding: gzip");

System.IO.Stream reqStream = req.GetRequestStream();

GZipStream gz = new GZipStream(reqStream, CompressionMode.Compress);

System.IO.StreamWriter sw = new System.IO.StreamWriter(gz, Encoding.ASCII);
sw.Write( large_amount_of_data );
sw.Close();

gz.Close();
reqStream.Close()


System.Net.WebResponse resp = req.GetResponse();
// (handle response...)
Run Code Online (Sandbox Code Playgroud)

我不完全确定"Content-Encoding:gzip"适用于客户端提供的头文件.

c# gzip webrequest gzipstream

16
推荐指数
1
解决办法
1万
查看次数

您建议使用哪种压缩(GZIP是最受欢迎的)servlet过滤器?

我正在寻找一个GZIP servlet过滤器,用于高容量的web应用程序.我不想使用特定于容器的选项.

需求

  1. 能够压缩响应有效负载(XML)
  2. 快点
  3. 经证实适用于大批量应用
  4. 应正确设置适当的Content-Encoding
  5. 便携式跨容器
  6. 可选择解压缩请求

谢谢.

java servlets java-ee servlet-filters

15
推荐指数
2
解决办法
2万
查看次数

如何使用Spring RestTemplate压缩压缩HTTP请求?

如何gzip 创建的HTTP 请求org.springframework.web.client.RestTemplate?

我正在使用Spring 4.2.6Spring Boot 1.3.5(Java SE,而不是Android或Javascript在Web浏览器中).

我正在做一些非常大的POST请求,我希望压缩请求体.

java spring http http-compression

12
推荐指数
1
解决办法
6781
查看次数

如何在Spring MVC中解码Gzip压缩请求体

我有一个发送数据的客户端

CONTENT-ENCODING deflate
Run Code Online (Sandbox Code Playgroud)

我有这样的代码

@RequestMapping(value = "/connect", method = RequestMethod.POST)
@ResponseBody
public Map onConnect(@RequestBody String body){}
Run Code Online (Sandbox Code Playgroud)

目前,"body"打印出乱码的压缩数据.有没有办法让Spring MVC自动解压缩呢?

java rest spring http spring-mvc

9
推荐指数
3
解决办法
2万
查看次数

在Spring Boot REST应用程序中处理gzip压缩请求

我有一个Spring Boot REST应用程序(1.5.6.RELEASE).我想gzip压缩传入和传出.根据这个文档https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html我已经设置

server.compression.enabled=true
server.compression.mime-types=...
Run Code Online (Sandbox Code Playgroud)

但这似乎只适用于从我的服务gzipping响应(这就是文档实际上说的"#如果启用了响应压缩.").

我的问题是传入的gzip压缩请求没有被解压缩,导致JSON解析错误.

有谁知道如何在我的Spring Boot应用程序中打开请求解压缩?

编辑一个例子:

POM片段:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

控制器代码:

@RestController
public class Controller {
    @RequestMapping(value = "/", method = RequestMethod.POST, consumes = "application/json")
    public String post(@RequestBody Map<String, String> request) {
        return request.get("key");
   }
}
Run Code Online (Sandbox Code Playgroud)

使用curl测试:

$ echo '{ "key":"hello" }' > body
$ curl -X POST -H "Content-Type: application/json" --data-binary @body http://localhost:8080 # prints 'hello'
$ echo '{ "key":"hello" }' | gzip > …
Run Code Online (Sandbox Code Playgroud)

java rest spring spring-boot

8
推荐指数
1
解决办法
4247
查看次数

为什么 POST 方法期间请求正文的 GZIP 压缩不常见?

我最近在玩 GZIP 压缩以及我理解以下内容的方式:

  1. 客户端从 Web 服务器请求一些文件或数据。客户端还会发送一个标头,上面写着“Accept-Encoding,gzip”
  2. Web Server 检索文件或数据,对其进行压缩,然后将它们以 GZIP 压缩格式发送回客户端。Web 服务器还发送一个标题为“Content-Encoded,gzip”,以通知客户端数据已被压缩。
  3. 客户端然后解压缩数据/文件并为用户加载它们。

我知道这是一种常见的做法,当您需要加载需要大量 HTML、CSS 和 JavaScript 的页面时,这很有意义,这些页面可能相对较大,并且会增加浏览器的加载时间。

但是,我试图进一步研究这一点,为什么在进行 POST 调用时 GZIP 压缩请求正文并不常见?是不是因为通常请求主体很小,所以在 Web 服务器上解压缩文件所需的时间比简单地发送请求所需的时间长?是否有关于此的某种文件或参考资料?

谢谢!

post gzip http-compression

8
推荐指数
2
解决办法
6896
查看次数

使用POST In Rails进行持久/保持活动的HTTP连接

有没有办法在rails中维护/使用POST命令的持久连接?

我想创建一个API,我的应用程序接受来自外部服务的数据流(我正在编写这个外部服务,所以我可以灵活地设计我的设计).速度至关重要.我需要以每秒1000点以上的速度从外部源获取信息.与一些计算机科学家交谈时,人们提出了使用持久连接的想法,这样昂贵的TCP握手只需要执行一次.使用外部服务中的库,然后我将创建多个POST项目,这些项目被推送到我的rails应用程序中,然后逐个处理这些POST项目.

我对rails范例的理解是每个请求(POST,GET,PUT等)都需要一个TCP连接.有没有办法利用一个TCP连接获得多个POST?

我目前正在使用以下内容:

  • Rails 3.2
  • Ruby 1.9.3(必要时可以切换到2.0)

编辑

为了帮助澄清我的目标:

我有一个外部系统,每秒收集1,000个数据点(3个浮点数,一个时间戳和2个整数).我想将这些数据推送到我的Ruby on Rails服务器上.我希望配置正确的系统我可以实时使用HTTP堆栈(收集数据点后,我将其推送到我的rails服务器).我还可以降低传输速率并将数据点组合在一起发送它们.我已经看过使用消息传递队列,但我想看看在转到专门的队列API之前是否可以编写更"标准"的HTTP API.

post ruby-on-rails http stream keep-alive

4
推荐指数
1
解决办法
4598
查看次数