Tag: http

httpClient.execute中的ClientProtocolException(httpget,responseHandler)

我使用以下代码从Web服务器请求xml: HttpClient httpclient = new DefaultHttpClient() try { HttpGet httpget = new HttpGet(“http://63.255.173.242/get_public_tbl.cgi?A=1”); ResponseHandler responseHandler = new BasicResponseHandler(); String responseBody = httpclient.execute(httpget, responseHandler); System.out.println(responseBody); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { httpclient.getConnectionManager().shutdown(); } 当我调用httpclient.execute(httpget,responseHandler)时,我得到一个clientProtocolException。 url在Web浏览器中工作正常,它返回xml,浏览器显示它。 任何想法为什么我会得到一个clientProtocolException但浏览器处理它就好了? 编辑1: 查看协议exception,详细消息是:“服务器无法响应有效的HTTP响应”。 我无法更改我正在访问的Web服务器。 有没有办法忽略这个并只是访问响应? 编辑2: 我发现服务器没有发回完整的标头。 有没有办法访问响应的内容,即使返回一个损坏的标题? 编辑3:我编辑的IP地址是我正在打的真实IP地址。 任何帮助将非常感激。

RESTEasy客户端框架身份validation凭据

RESTEasy(一个JAX-RS实现)有一个很好的客户端框架,例如: ServiceApi client = ProxyFactory.create(ServiceApi.class, baseUri); 如何为此客户端提供HTTP身份validation凭据?

我可以覆盖使用java的HttpUrlConnection类的Host头吗?

我正在使用以下代码在java中打开http连接: URL url = new URL(“http://stackoverflow.com”); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod(“GET”); conn.setRequestProperty(“Host”, “Test:8080”); conn.getOutputStream(); 但是,调用conn.setRequestProperty(“Host”,“Test:8080”)似乎无效,无论我调用方法的顺序如何,主机都重置为目标服务器。 有没有办法在不使用其他库的情况下覆盖Host头? TIA Matt

是否在JDK中定义了HTTP和HTTPS默认端口号?

我试图看看端口80和端口443是否被定义为任何地方的公共常量。 这些是否存在于JDK中(或者可能存在于Apache HttpClient等公共库中)?

Java – 按块读取文件块

我想一块一块地读一个文件。 该文件被分成几个部分,存储在不同类型的媒体上。 我目前所做的是调用文件的每个单独部分,然后将其合并回原始文件。 问题是我需要等到所有块都到达才能播放/打开文件。 是否有可能在他们到达时阅读这些块,而不是等待它们全部到达。 我正在处理媒体文件(电影文件)。 谢谢 抱歉我的英语

发送HTTP时的OutputStream OutOfMemoryError

我试图将一个大的video/图像文件从本地文件系统发布到一个http路径,但一段时间后我遇到内存不足错误… 这是代码 public boolean publishFile(URI publishTo, String localPath) throws Exception { InputStream istream = null; OutputStream ostream = null; boolean isPublishSuccess = false; URL url = makeURL(publishTo.getHost(), this.port, publishTo.getPath()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); if (conn != null) { try { conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod(“PUT”); istream = new FileInputStream(localPath); ostream = conn.getOutputStream(); int n; byte[] buf […]

替代“Referer”标题

我使用了代码“request.getHeader(”Referer“);” 代码似乎工作正常。 但最近我发现它不能在IE中运行。 IE投掷无效。 我现在对如何前进感到无能为力。 有没有“Referer”标题的替代品可以获得以前的链接并在所有浏览器中正常工作? 从上一个链接设置自定义标题对我来说不是一个可行的选择。 所以有人请帮我解决这个问题。 谢谢。

使用HTTP读取文件的第一部分

我想通过读取文件的第一部分并分析内容来确定文件的类型(通常为UTF-8)。 (该类型特定于我的社区,但不在我的控制之下,并且不包含在MIME / MediaType中,通常是TEXT_PLAIN)。 我正在使用客户端上的’org.restlet’库来分析标头 Request request = new Request(Method.HEAD, url); 所以我知道内容长度,并且可以(如果必要和可能)估计我应该为分析下载多少字节 澄清:我无法使用MediaType。 从答案1看起来我必须得到内容。 因此,修订后的问题是: “我可以使用Restlet获取文件的一部分吗?” 答案:以下代码可以满足我的需求。 我已经将@BalusC归功于展示方式。 如果我遗漏了任何内容,请评论: public String readFirstChunk(String urlString, int byteCount) { String text = null; if (urlString != null) { org.restlet.Client restletClient = new org.restlet.Client(Protocol.HTTP); Request request = new Request(Method.GET, urlString); List ranges = Collections.singletonList(new Range(0, byteCount)); request.setRanges(ranges); Response response […]

在java中发布XML请求

如何使用HTTP POST将XML请求发布到URL并检索响应? 更新对不起,我的问题不明确。 我想知道如何使用HttpClient或URLConnection将XML请求发布到URL,并将响应作为POST参数获取并将其显示在网页中。

Java HTTP代理服务器

我需要实现一个HTTP代理服务器应用程序,它将来自多个客户端的请求代理到远程服务器。 以下是步骤: 客户转发请求代理 代理转发请求到服务器 服务器向Proxy返回请求 代理向客户返回请求。 我只是不确定如何实现这个代理。 我的第一个想法是实现一个tomcat应用程序,它使用jersey / apache httpclient将请求转发给远程服务器并将响应返回给客户端? 有没有更好的方法来实现这样的代理服务器? 代理需要处理多个线程。