我正在使用jetty HTTPClient和ContentExchange来实现代理。ContentExchange有几个钩子方法,当加载响应的某些部分时,可以覆盖这些钩子方法来执行代码。我的问题是从jetty Buffer将响应正文加载到返回给客户端的HttpServletACK对象。响应内容是JSON,较短的JSON正确导出到客户端,但较长的JSON不会在响应中显示,并导致以下错误:语法错误:JSON.parse:JSON数据的第1行第1列的数据意外结束。留档不显示outputStream对象的任何最大长度,所以我不确定为什么内容会被切断/根本不加载。
ContentExchange contentExchange = new ContentExchange() {
ServletOutputStream outputStream;
String contentString = "";
@Override
protected void onResponseStatus(Buffer version, int status, Buffer reason) throws IOException {
super.onResponseStatus(version, status, reason);
httpResponse.setStatus(status);
remoteLRSRequest.setStatus(status);
remoteLRSRequest.setResponse(reason.toString());
}
@Override
protected void onResponseHeader(Buffer name, Buffer value) throws IOException {
super.onResponseHeader(name, value);
httpResponse.setHeader(name.toString(), value.toString());
}
@Override
protected void onResponseContent(Buffer content) throws IOException {
if (outputStream == null) {
outputStream = httpResponse.getOutputStream();
}
content.writeTo(outputStream);
outputStream.flush();
}
@Override
protected void onResponseComplete() throws IOException {
outputStream.close();
super.onResponseComplete();
}
}
注意:当我在调试器中单步执行此代码时,我可以看到加载到 outputStream 中的全部响应内容。但是,flush() 似乎没有正确提交响应数据。
这是对实际问题的误诊。我中继的响应包含一个“传输-结束编码:分块”标头,该标头导致问题。
我的应用程序实现了VpnService来拦截流量并提供量身定制的响应。目标是处理到特定地址的流量,并丢弃其他请求。 目前,我成功地解析了传入的请求,构建并发送了响应。然而,问题是这些响应并不是对原始请求的实际响应;使用套接字连接进行测试只是超时。 为了进行这一区分,我目前正在解析VPN服务输入流中的原始IP数据包,如下所示: IpDatagram是一个类,通过它可以将字节数组解析为IP数据包的表示
我试图使用Spring 4实现简单的Web服务。但是我的用户服务似乎不起作用。 我有如下配置: 我的内存HSQLDB的持久性配置如下: 我有一个实体。这是我的存储库: 我还在9999端口上安装了一个嵌入式jetty来运行这项服务。 当jetty启动时,我转到或或类似的smth,就会出现错误404方法也不起作用。 我认为这是因为Servlet Dispatcher不知道我公开的存储库。但我也不知道如
响应输出 大多数情况,我们不需要关注Response对象本身,只需要在控制器的操作方法中返回数据即可,系统会根据default_return_type和default_ajax_return配置自动决定响应输出的类型。 默认的自动响应输出会自动判断是否AJAX请求,如果是的话会自动输出default_ajax_return配置的输出类型。 最简单的响应输出是直接在路由闭包或者控制器操作方法中返回一
问题内容: 是否可以在Struts2的操作中将表单的数据提交到Java Set? 动作代码: 表单代码: 问题答案: 该仅仅是一个集合,Struts2的对任何类型的集合的内部支持。但是对于这种类型的集合,您不能在OGNL表达式中使用索引。尝试
HTTP 响应报文分为三个部分: 响应行 响应头 响应体 对于 HTTP 响应体的输出,在 OpenResty 中调用 ngx.say 或 ngx.print 即可。经过查看官方 wiki ,这两者都是输出响应体,区别是 ngx.say 会对输出响应体多输出一个 \n 。如果你用的是浏览器完成的功能调试,使用这两着是没有区别的。但是如果使用各种终端工具,这时候使用 ngx.say 明显就更方便了。