Tag: http

UTF-8中的JAVA Http POST请求

我的J2EE应用程序能够从JSP页面接收POST请求,没问题。 但是如果我使用另一个java应用程序发送POST请求,则收到的参数不是UTF-8字符串。 这里有我的代码: URL url = new URL(“http://localhost:8080/ITUNLPWebInterface/SimpleApi”); HttpURLConnection cox = (HttpURLConnection) url.openConnection(); cox.setDoInput(true); cox.setDoOutput(true); cox.setRequestMethod(“POST”); cox.setRequestProperty(“Accept-Charset”, “UTF-8”); cox.setRequestProperty(“Content-Type”, “application/x-www-form-urlencoded”); cox.setRequestProperty(“charset”, “UTF-8”); DataOutputStream dos = new DataOutputStream(cox.getOutputStream()); String query = “tool=ner&input=şaşaşa”; dos.writeBytes(query); dos.close(); 难道我做错了什么? 感谢您的回复

删除servlet中的cookie的问题

我尝试使用此代码删除servlet中的cookie Cookie minIdCookie = null; for (Cookie c : req.getCookies()) { if (c.getName().equals(“iPlanetDirectoryPro”)) { minIdCookie = c; break; } } if (minIdCookie != null) { minIdCookie.setMaxAge(0); minIdCookie.setValue(“”); minIdCookie.setPath(“/”); res.addCookie(minIdCookie); } res.flushBuffer(); 但是这没有效果,也没有改变cookie属性。 我也尝试在这个servlet中添加一个cookie,这很好用。 为什么我无法更改现有cookie的属性。

Java HttpURLConnection InputStream.close()挂起(或工作时间太长?)

首先,一些背景。 有一个工作人员扩展/解决了一堆短URL: http://t.co/example -> http://example.com 所以,我们只是按照重定向。 而已。 我们不会从连接中读取任何数据。 在我们得到200之后,我们返回最终的URL并关闭InputStream。 现在,问题本身。 在生产服务器上,其中一个解析程序线程挂起在InputStream.close()调用内: “ProcessShortUrlTask” prio=10 tid=0x00007f8810119000 nid=0x402b runnable [0x00007f882b044000] java.lang.Thread.State: RUNNABLE at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.skip(BufferedInputStream.java:352) – locked (a java.io.BufferedInputStream) at sun.net.www.MeteredStream.skip(MeteredStream.java:134) – locked (a sun.net.www.http.KeepAliveStream) at sun.net.www.http.KeepAliveStream.close(KeepAliveStream.java:76) at java.io.FilterInputStream.close(FilterInputStream.java:155) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.close(HttpURLConnection.java:2735) at ru.twitter.times.http.URLProcessor.resolve(URLProcessor.java:131) at ru.twitter.times.http.URLProcessor.resolve(URLProcessor.java:55) at … 经过简单的研究,我了解到在调用skip()之前将其清理回连接池(如果设置了keep-alive?)。 我仍然不明白如何避免这种情况。 此外,我怀疑我们的代码中是否存在一些不良设计或JDK中存在问题。 所以,问题是: 是否可以避免挂在close() ? 例如,保证一些合理的超时。 是否可以避免从连接中读取数据? 记住我只想要最终的URL。 实际上,我认为,我根本不想调用skip() […]

RFC 2388多部分POST的服务器实现与RFC 2047冲突?

我正在尝试在HTTP服务器上实现RFC 2388以支持多部分POST。 我正在专门针对content-disposition的“name”参数查看规范。 根据RFC 2388第3节,它规定: 最初在非ASCII字符集中的字段名称可以使用RFC 2047中描述的标准方法在“name”参数的值内编码。 我已经“听说”UA目前在表单控件名称上不支持RFC2047。 他们只需发送原始编码的文本。 (即如果表单控件的名称是使用UTF-8的日语,它将发送带有UTF-8中的日语文本的多部分POST请求) 然而,为了“忠实”,这有一天会得到解决。 我更喜欢坚持使用RFC。 但问题来自RFC 2047本身。 根据第5(3)条规定: “编码字”不得出现在“addr-spec”的任何部分。 “编码字”绝不能出现在“引用字符串”中。 “编码字”不得在“已接收”标题字段中使用。 “编码字”不得用于MIME内容类型或内容处置字段的参数,也不得用于“评论”或“短语”中的任何结构化字段正文中。 冲突发生在第4点。 鉴于’name’参数是“content-disposition”字段的一部分。 我发现自己迷失了规范要求我们实现者做什么。 无论什么在“现实”中起作用/不起作用。 我想问一下是否有人发现这也是冲突。 我发现自己也在问为什么RFC 2388仍然将RFC 2047称为“name”参数,但稍后只有几段后面将RFC 2231称为“filename”参数的编码规范。 鉴于RFC 2047不能用于“参数值”,这就是显然创建RFC 2231的原因。 RFC 2388是否也未更新,因此“name”参数使用RFC 2231。 最重要的是,我应该或者不应该为实现RFC 2388的function而实施RFC 2047 AT ALL而烦恼吗? 我是否还应该使用RFC 2231来处理’filename’参数? 有没有人知道任何UAs目前是否使用RFC 2231来上传非ascii文件名?

有没有Java的http_build_query函数的Java等价物?

我有一个包含我的数据的Map,并希望用它构建一个查询字符串,就像我在PHP上使用http_build_query一样。 我不确定这段代码是否是最好的实现,或者我忘记了什么? public String toQueryString(Map data) throws UnsupportedEncodingException { StringBuffer queryString = new StringBuffer(); for (Entry pair : data.entrySet()) { queryString.append ( URLEncoder.encode ( (String) pair.getKey (), “UTF-8” ) + “=” ); queryString.append ( URLEncoder.encode ( (String) pair.getValue (), “UTF-8” ) + “&” ); } if (queryString.length () > 0) { queryString.deleteCharAt ( queryString.length () […]

如何在Dropwizard(Jersey)中记录JSON响应

我想知道如何配置Dropwizard来记录JSON响应。

如何为HTTP GET的多个Key-Value参数设计REST URI

我正在设计一个RESTful API。 一项服务应为多个键值对提供查询function。 例如,客户端可以使用一个HTTP GET请求查询不同的产品和相关数量。 客户想要使用金额44和产品2查询产品1,金额为55.我实际上不希望我的URI看起来像这样: /produkt?productId1=1&productquantity1=44&productId2=2&productquantity2=55 因为我不知道有多少产品被查询。 或者像这样: /produkt?product=1,44&product=2,55 因为客户怎么能知道在逗号之前有productId和逗号之后的数量。 有没有人有其他解决方案? 或者,提供使用一个请求查询多个产品的可能性是不是RESTful? 提供仅查询一个具有相关数量的产品的可能性是否更好?如果客户想要查询更多产品,他们应该发送更多请求?

握手期间的WebSocket错误意外的代码200

我一直在使用Glassfish 4作为我的服务器。 我正在使用以下语句打开WebSocket连接: webSocket = new WebSocket(link); 哪里: link = ‘ws://localhost:8080/CollabEdit/Document/file333B1CDF85-DDDC-E411-8299-F82FA8BE8622’; 在服务器文件中: @ServerEndpoint(value=”/file333B1CDF85-DDDC-E411-8299-F82FA8BE8622″, encoders = {MessageEncoder.class}, decoders = {MessageDecoder.class}) 实际上,我一直在使用URL映射,这个“ file333B1CDF85-DDDC-E411-8299-F82FA8BE8622 ”实际上是针对用户的,但是在后端,控件位于“ main.jsp ”文件中。 在执行期间,生成的错误是: WebSocket connection to ‘ws://localhost:8080/CollabEdit/Document/file333B1CDF85-DDDC-E411-8299-F82FA8BE8622’ failed: Error during WebSocket handshake: Unexpected response code: 200 GlassFish服务器中的exceptionStackTrace : SEVERE: WebModule[/CollabEdit]Exception starting filter WebSocket filter java.lang.InstantiationException at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:135) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:5297) at org.apache.catalina.core.StandardContext.start(StandardContext.java:5909) at com.sun.enterprise.web.WebModule.start(WebModule.java:691) […]

玩! 框架 – 处理POST请求

这是处理登录POST请求的路由: POST /login/submit controllers.Users.loginSubmit(user : String, password : String) 这是login.scala.html: 我有两个问题: 什么应该是行动的价值? 是“登录/提交”? 如何传递此表单以在loginSubmit函数中处理? 谢谢

如何以编程方式发送带参数的HTTP请求?

如果我使用浏览器向服务器发送信息(例如使用登录,密码页面),我只需填写用户文本框和密码文本框,然后单击登录按钮。 我想发送此信息,但无需使用浏览器。 我想“填写”文本框,但无需在浏览器中手动完成。 可能正在使用Servlet。 我的问题是:如何在文本框中发送信息,例如,从Servlet发送到网站?