Tag: httpurlconnection

JAVA中带有JSON字符串的HTTP POST请求

我必须使用我已生成的JSON字符串发出http Post请求。 我尝试了两种不同的方法: 1.HttpURLConnection 2.HttpClient 但我从他们两个得到了相同的“不需要的”结果。 到目前为止,我的代码与HttpURLConnection是: public static void SaveWorkflow() throws IOException { URL url = null; url = new URL(myURLgoeshere); HttpURLConnection urlConn = null; urlConn = (HttpURLConnection) url.openConnection(); urlConn.setDoInput (true); urlConn.setDoOutput (true); urlConn.setRequestMethod(“POST”); urlConn.setRequestProperty(“Content-Type”, “application/json”); urlConn.connect(); DataOutputStream output = null; DataInputStream input = null; output = new DataOutputStream(urlConn.getOutputStream()); /*Construct the POST data.*/ String […]

Java多连接下载

我想得到一些建议,我已经开始了一个新项目来创建一个将使用多个连接的java下载加速器。 我想知道如何最好地解决这个问题。 到目前为止,我已经发现我可以使用HttpUrlConnection并使用range属性,但想知道这样做的有效方法。 一旦我从多个连接下载了部件,我就必须加入这些部件,以便我们最终得到一个完全下载的文件。 提前致谢 :)

Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection

我有两个Tomcat服务器需要维持持久连接以减少SSL握手。 一台服务器(代理)位于DMZ中,而另一台服务器安全地位于另一台防火墙后面。 代理基本上只运行一个简单的servlet,在将请求转发到安全机器之前进行一些健全性检查。 在初始请求中,机器在执行实际工作之前交换证书。 因此,我希望在几分钟的超时时间内保持持久连接。 要与安全服务器通信,代理上的servlet使用HttpsUrlConnection 。 我已经设置了WireShark,我注意到无论我在安全机器上为连接器设置了keepAliveTimeout值,TCP连接在大约5或10秒后关闭。 这个数字似乎与我所读到的是默认超时以及Java如何处理HTTP Keep-Alive。 此链接说明如果服务器发送了Java,则表示Keep-Alive超时,否则它在关闭连接之前使用5秒(直接连接)或10秒(代理连接)。 我想弄清楚的是我如何强制Tomcat发送Keep-Alive标头。 不, Connection: Keep-Alive ,但Keep-Alive: timeout=x 。 我已经尝试过使用Apache HTTP服务器并修改httpd.conf中的keepAliveTimeout会导致Keep-Alive标头更改其超时值。 此外,Java确实遵守此超时。 更新(12/23/11):在运行了几个实验之后,我尝试使用Apache的HttpClient(3.1)而不是HttpsUrlConnection编写一些快速而脏的代码。 看来HttpClient在设置为使用Keep-Alive时,只是等待服务器关闭连接。 我不知道它会等多久。 我正在拍摄以保持HTTP连接活动3到5分钟。

Java HttpURLConnection.getInputStream但获得401 IOException

我正在为Java中的CouchDB编写REST客户端。 以下代码应该是非常标准的: this.httpCnt.connect(); Map responseHeaders = new HashMap(); int i = 1; while (true){ String headerKey = this.httpCnt.getHeaderFieldKey(i); if (headerKey == null) break; responseHeaders.put(headerKey, this.httpCnt.getHeaderField(i)); i++; } InputStreamReader reader = new InputStreamReader(this.httpCnt.getInputStream()); StringBuilder responseBuilder = new StringBuilder(); char[] buffer = new char[1024]; while(true){ int noCharRead = reader.read(buffer); if (noCharRead == -1){ reader.close(); break; } responseBuilder.append(buffer, […]

在Java中,有多接近连接并使用HttpURLConnection释放端口/套接字?

我正在使用HttpURLConnection来下载Java中的页面。 我忘了释放连接,我认为这给我的系统(网络浏览器)带来了一些问题。 现在我已经做了一些测试,看到在断开连接之后,一些连接仍然像Windows上netstat命令的结果中的TIME_WAIT。 我如何立即释放此连接? 示例代码: private HttpURLConnection connection; boolean openConnection(String url) { try { URL urlDownload = new URL(url); connection = (HttpURLConnection) urlDownload.openConnection(); connection.setInstanceFollowRedirects(true); connection.connect(); connection.disconnect(); return true; } catch (Exception e) { System.out.println(e); return false; } }

HttpURLConnection超时默认值

我似乎遇到了一些tcp请求有时会“卡住”的问题,比如它正在等待某些响应,但连接已被“切断”,因此响应将永远不会到来。 HttpURLConnection的预期行为是否具有默认超时? 是否设置了合理的默认设置,以便我无法在默认情况下进入这种奇怪的“挂起”状态?

Java HTTPUrlConnection超时不起作用

我编写了一个程序,通过随机代理打开httpurlconnection到网站。 我的httpurlconnection叫做conn 。 现在我知道,其中一些代理可能太慢了,所以我用conn.setConnectTimeout(40000)和conn.setReadTimeout(40000)将连接超时设置为40000毫秒。 这样做后,我得到了这段代码: long diff = 0; long starttime = 0; long endtime = 0; try { starttime = System.currentTimeMillis(); conn.connect(); endtime = System.currentTimeMillis(); diff = endtime – starttime; if (endtime <= starttime + conn.getConnectTimeout()) { //Trying to read sourecode InputStreamReader isrConn = new InputStreamReader(conn.getInputStream()); BufferedReader brConn = new BufferedReader(isrConn); line = brConn.readLine(); […]

获取对Java的默认http(s)URLStreamHandler的引用

我有一个我需要在我的一个项目中使用的库,不幸的是它注册了自己的URLStreamHandler来处理http- URLs 。 有没有办法获得对Java的默认http-和https- URLStreamHandlers的引用,所以我可以在URL的构造函数中指定其中一个来打开标准的http连接而不使用库覆盖的协议?

所有信任的HostnameVerifier都会导致HttpURLConnection出现SSL错误

我正在使用HttpURLConnection连接到SSL站点。 有时这些使用自签名证书/其他表现不佳的SSL,所以我有一个访问这些证书的模式。 我正在使用在线推荐的许多地方的典型代码: // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {} public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {} } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance(“SSL”); […]

为什么我收到此错误提前结束文件?

我正在尝试解析和XML response ,但我失败了。 我最初认为xml只是没有在响应中返回,所以我通过在线直接链接到我的xml文件来制作下面的代码。 我能够毫无问题地将XML打印到屏幕上。 但是,当我调用我的解析方法时,我得到文件的过早结束。 如果我直接传递URL,它可以工作: builder.parse( “”); 但是当我传递一个InputStream时失败: builder.parse(connection.getInputStream()); try { URL url = new URL(xml); URLConnection uc = url.openConnection(); HttpURLConnection connection = (HttpURLConnection )uc; connection.setDoInput(true); connection.setDoOutput(true); InputStream instream; InputSource source; //get XML from InputStream if(connection.getResponseCode()>= 200){ connection.connect(); instream = connection.getInputStream(); parseDoc(instream); } else{ instream = connection.getErrorStream(); } } catch (MalformedURLException e) { […]