Tag: urlconnection

getContentLength不适用于android for FTP url

以下代码在android上为filesize打印长度为-1,但它在桌面JAVA上运行正常。 我使用的是Android 2.2。 URL url1 = null; URLConnection uconn = null; try { url1 = new URL(“ftp://FTPHOST/file.zip”); uconn = url1.openConnection(); uconn.setDoInput(true); int len= uconn.getContentLength(); int headersize = uconn.getHeaderFields().size(); System.out.println(“******************************* “+len); } catch (Exception e) { e.printStackTrace(); } return null; 如果在android中获取文件大小的任何解决方法,请告诉我..

代理使用Java URLConnection类

我是Java的新手。 我正在使用以下代码来调用REST API,它在简单的环境中工作正常,但是当我使用代理环境时抛出NullPointerException 。 我在google上找到了我们必须为其设置代理设置的结果。 我根据http://www.javaworld.com/javaworld/javatips/jw-javatip42.html文章设置代理,但这不起作用+ base64Encode(密码)创建语法错误。 URL url = new URL(“http://examplerestapi/get/user”); URLConnection yc = url.openConnection(); in = new BufferedReader(new InputStreamReader(yc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { sb.append(inputLine); } String res = sb.toString(); 请帮我设置代理主机,端口,用户名和密码。

如何在Java中获得无代理连接?

如何在与URLConnection建立连接时避免通过ProxySelector ,或者如何保证连接不受Java知道的任何代理的影响? 我认为这就是Proxy.NO_PROXY的用途。 引用Javadoc: 代表DIRECT连接的代理设置,基本上告诉协议处理程序不使用任何代理 然而,这样的连接仍将通过ProxySelector。 我不明白吗? 我做了一个小测试来certificate我的观点: public static void main(String[] args) throws MalformedURLException, IOException { ProxySelector.setDefault(new MyProxySelector()); URL url = new URL(“http://foobar.com/x1/x2”); URLConnection connection = url.openConnection(Proxy.NO_PROXY); connection.connect(); } 还有一个虚拟的ProxySelector,除了记录正在发生的事情之外什么都不做: public class MyProxySelector extends ProxySelector { @Override public List select(URI uri) { System.out.println(“MyProxySelector called with URI = ” + uri); return Collections.singletonList(Proxy.NO_PROXY); } @Override […]

Java Webstart和URLConnection缓存API

URLConnection缓存API的描述表示为最后一句: Java 2 Standard Edition中没有URLConnection缓存的默认实现。 但是,Java插件和Java WebStart确实提供了一个开箱即用的function。 在哪里可以找到有关Webstart ResponseCache的更多信息? Webstart的哪些版本在哪些平台上激活缓存? 它在哪些情况下是活跃的? 只有HTTP获取? 可以配置吗? 源代码是否可用? 背景: 情况1 使用以下(groovy)代码 def url = new URL(‘http://repo1.maven.org/maven2/’) def connection = url.openConnection() def result = connection.inputStream.text 我希望每次执行代码时都会联系服务器。 但是当执行时 Java Web Start 10.9.2.05 JRE-Version verwenden 1.7.0_09-b05 Java HotSpot(TM) Client VM 行为是不同的。 第一次执行代码时,会联系服务器。 代码的所有后续执行都不涉及与服务器的任何通信(使用wireshark跟踪)。 但它变得更加奇怪。 重新启动webstart应用程序后,第一次执行代码时,请求URL为http://repo1.maven.org/maven2/.pack.gz ,结果为404 。 仅请求原始url导致304 NOT MODIFIED 。 所有后续执行都不涉及与服务器的任何通信。 […]

我可以全局设置HTTP连接的超时吗?

我有一个程序,它使用javax.xml.ws.Service来调用由WSDL定义的远程服务。 此程序在Google App Engine上运行,默认情况下,将HTTP连接超时设置为5秒{1}。 我需要增加此超时值,因为此服务通常需要很长时间才能响应,但由于此请求不是通过URLConnection ,我无法弄清楚如何调用URLConnection.setReadTimeout(int) {2},或以其他方式更改超时。 有没有办法在App Engine上全局设置HTTP连接超时? 而且,为了分享知识,人们将如何解决这类问题呢? {1}: https : //developers.google.com/appengine/docs/java/urlfetch/overview#Requests {2}: http : //docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout(int)

URLConnection.setUseCaches()如何在实践中发挥作用?

我有一个Applet,它使用URLConnection通过http连接加载图像。 我为所有连接设置setUseCaches(true),但仍然没有看到任何缓存行为。 我的图像的HTTP标头具有合理的缓存设置。 如果你看一下bug 4528599,就有这个相当神秘的陈述: Java Plug-In的当前版本(1.3.1)仅检查浏览器缓存中名称以.jar或.class结尾的文件。 有人告诉我,对于Java Plug-In 1.4,将检查浏览器缓存中的以下文件类型:.class,.jar,.zip,.jpg,.gif,.wav,.au。 当然,这被标记为1.6的固定,但即使在1.6以下,我也看不到任何缓存。 我的图像是PNG文件,在某些情况下,实际上并不以.png扩展名结尾。 我没有看到任何缓存。 错误修复报告讨论了1.6统一下载引擎,但谷歌似乎并不太了解它。 这是应该工作还是只是另一个破碎的太阳“function”。 有什么方法或解决方法,我可以让我的applet从浏览器缓存加载PNG图像? 我宁愿不实施自己的…. 更新:缓存似乎与ResponseCache实现相关联。 有关其工作原理的详细信息,请参阅此技术说明。 最后一行说: Java 2 Standard Edition中没有URLConnection缓存的默认实现。 但是,Java插件和Java WebStart确实提供了一个开箱即用的function。 所以在我看来问题确实变成了:Java插件ResponseCache实现如何真正起作用? v1.4 / v1.5 / v.16之间有什么区别 有人有任何想法吗?

URLConnection不允许我访问有关Http错误的数据(404,500等)

我正在制作一个爬虫,并且需要从流中获取数据,无论它是否为200。 CURL正在这样做,以及任何标准浏览器。 以下实际上不会获取请求的内容,即使有一些,也会引发http错误状态代码的exception。 我想要输出无论如何,有没有办法? 我更喜欢使用这个库,因为它实际上会执行持久连接,这对于我正在进行的爬行类型来说是完美的。 package test; import java.net.*; import java.io.*; public class Test { public static void main(String[] args) { try { URL url = new URL(“http://github.com/XXXXXXXXXXXXXX”); URLConnection connection = url.openConnection(); DataInputStream inStream = new DataInputStream(connection.getInputStream()); String inputLine; while ((inputLine = inStream.readLine()) != null) { System.out.println(inputLine); } inStream.close(); } catch (MalformedURLException me) { System.err.println(“MalformedURLException: […]

无法从站点获取服务器证书

我无法从我的网站(其他网站)获得证书。 我尝试了一些使用HttpsURLConnection和方法getServerCertificates解决方案,但没有解决问题。 URL httpsURL = new URL(“https://www.google.com.br/”); HttpsURLConnection connection = (HttpsURLConnection)httpsURL.openConnection(); Certificate[] certs = connection.getServerCertificates(); 我得到一个例外,说“getServerCertificates无法解析”。 我不认为有必要使用密钥库,是吗?

ANDROID java.net.URLConnection立即发送图像和数据

我使用java.net.URLConnection使用POST方法将图像和一些参数发送到服务器。 我的下面的代码可以很好地将图像发送到服务器,但我有点困惑附加一些参数并一次发送到服务器。 我跟着这里和这里,但我认为它与我的代码不同的方法。 这是我的代码段: import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.app.ProgressDialog; import android.util.Log; import android.widget.Toast; import com.yai.app.support.DialogHandler; public class ThreadImageUploader { private int serverResponseCode = 0; private ProgressDialog dialog; private Activity activity; public ThreadImageUploader(ProgressDialog mProgressDialog, Activity mActivity){ dialog = mProgressDialog; activity = mActivity; } public int […]

使用Java从Github下载二进制文件

我正在尝试使用以下方法下载此文件( http://github.com/downloads/TheHolyWaffle/ChampionHelper/ChampionHelper-4.jar ),但它似乎不起作用。 我收到一个空/损坏的文件。 String link = “http://github.com/downloads/TheHolyWaffle/ChampionHelper/ChampionHelper-4.jar”; String fileName = “ChampionHelper-4.jar”; URL url = new URL(link); URLConnection c = url.openConnection(); c.setRequestProperty(“User-Agent”, “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)”); InputStream input; input = c.getInputStream(); byte[] buffer = new byte[4096]; int n = -1; OutputStream output = […]