首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >HttpURLConnection不规则SocketException

HttpURLConnection不规则SocketException
EN

Stack Overflow用户
提问于 2014-03-05 06:40:02
回答 1查看 754关注 0票数 0

我做了一个java程序,可以从任何网站的可选目录中下载一些图片。一切正常,但有时它不会继续下载,而是在一段时间后抛出一个SocketException。下面是错误日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
62.png downloaded
63.png downloaded
64.png downloaded
65.png downloaded
66.png downloaded
Exception in thread "main" java.net.SocketException: Unexpected end of file from server
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at DownloadImage.main(DownloadImage.java:35)

文件不是问题所在。有时它会停在第五张图片上,有时会停在第70张图片上。这似乎是相当随机的。

我怀疑我尝试访问的url连接不均匀。但是我怎么才能修复它呢?我尝试将连接和读取超时设置为一个滑稽的值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
huc.setConnectTimeout(3600000);
huc.setReadTimeout(3600000);

但它并没有解决这个问题。

有什么想法吗?还是我的问题有另一个根源?

EN

回答 1

Stack Overflow用户

发布于 2014-03-06 02:19:56

我现在为我的问题找到了另一个解决方案。

SocketException被抛出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ReadableByteChannel rbc = Channels.newChannel(websiteUrl.openStream());

因此,我构建了一个try‘n’clause子句,并围绕它构建了一个while循环:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ReadableByteChannel rbc = null;
while (true) {
    try {
        rbc = Channels.newChannel(website.openStream());
        break;
    } catch (SocketException e) {
        System.out.println("connection failed");
    }
}

当然,它不能解决糟糕的连接问题,但至少我现在可以在我的程序的一次运行中下载所有东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22190446

复制
相关文章
详解HttpURLConnection
http://blog.csdn.net/woxueliuyun/article/details/43267365
bear_fish
2018/09/19
2.6K0
详解HttpURLConnection
Android的HttpUrlConnection
Android的HttpUrlConnection 项目结构: image.png activity_main.xml: <?xml version="1.0" encoding="utf-8"?>
Dream城堡
2018/12/28
5810
【Android】HttpURLConnection接口
Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。
程序员小何SS
2021/12/28
6560
HTTPURLConnection 发送Post数据
http://blog.csdn.net/chenlei1889/article/details/6363356
编程随笔
2019/09/11
2.8K0
HTTPURLConnection 发送Post数据
java.net.SocketException: socket closed
在使用socket编程的时候,发现当使用完getInputStream方法后,再获取OutputStream就会报
zhangheng
2020/04/28
4.6K0
gradle java.net.SocketException: Unexpected end of file from server
可以看到url 301了,指向的新url是 “https://downloads.gradle-dn.com/distributions/gradle-4.10.1-all.zip”,用这个替换gradle-wrapper.properties中的地址,再次重试,完整下载。
望天
2020/12/16
3.1K0
gradle java.net.SocketException: Unexpected end of file from server
HttpURLConnection 使用POST请求方式
HttpURLConnection 使用POST请求方式 new Thread(new Runnable() { @Override public void run() { intView(); } }).start(); } private void intView() { try { URL url =
八神太一
2021/04/05
3.6K0
HttpURLConnection 中Cookie 使用
如果想通过 HttpURLConnection 访问网站,网站返回cookie信息,下次再通过HttpURLConnection访问时,把网站返回 cookie信息再返回给该网站。可以使用下面代码。 CookieManager manager = new CookieManager(); CookieHandler.setDefault(manager); 通过这两行代码就可以把网站返回的cookie信息存储起来,下次访问网站的时候,自动帮你把cookie信息带上。 CookieManager还可以设置Co
java404
2018/05/18
3.4K0
利用HttpURLConnection发送请求
每个 HttpURLConnection实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字
Jack Chen
2018/09/14
1.3K0
[Android基础]Android中使用HttpURLConnection
HttpURLConnection继承了URLConnection,因此也能够向指定站点发送GET请求、POST请求。它在URLConnetion的基础上提供了例如以下便捷的方法。
易寒
2022/01/08
9930
图像不规则填充
算法:图像不规则填充是除了可以绘制多边形和多个多边形,还可以使用多个边来近似的画一条曲线等不规则的图像。如果图像多边形填充部分或全部位于图像外部,则将对其进行裁剪,还可以处理以亚像素精度指定的像素坐标,意味着可以将坐标作为编码为整数的定点数传递。
裴来凡
2022/05/28
6470
图像不规则填充
Android-上传图片(-)_HttpURLConnection
继选择图片相册并通过ImageView展示在Activity中,获取到图片真实路径后(详见Android获取相册中图片的路径 4.4版本前后的变化), 将通过以下两种方式(当然了不止这两种)将获取到的图片上传到服务端,仅涉及客户端代码部分。
小小工匠
2021/08/16
6150
Java中使用HttpUrlConnection调用api
HttpURLConnection标准Java接口(java.NET) —-HttpURLConnection,可以实现简单的基于URL请求、响应功能;
Vincent-yuan
2021/06/11
1.7K0
Java中使用HttpUrlConnection调用api
Java 原生网络编程.
    Java 语言从其诞生开始,就和网络紧密联系在一起。在 1995 年的 Sun World 大会上,当时占浏览器市场份额绝对领先的网景公司宣布在浏览器中支持Java,从而引起一系列的公司产品对Java的支持,使得Java很快成为一种流行的语言。
JMCui
2018/08/01
4630
Java 原生网络编程.
Java使用HttpURLConnection上传文件
从普通Web页面上传文件非常easy。仅仅须要在form标签叫上enctype=”multipart/form-data”就可以,剩余工作便都交给浏览器去完毕数据收集并发送Http请求。可是假设没有页面的话要怎么上传文件呢?
全栈程序员站长
2022/07/07
1.9K0
Android HttpURLConnection 工具类(封装)
随着 Okhttp 等框架的横空出世,最原生的网络请求已经退出历史舞台,但是有时候还是需要这种方式来请求的,因此我把它封装成一个工具类使用,需要的小伙伴直接复制使用就好了~
程序员飞飞
2020/02/29
2.9K0
HttpURLConnection,HttpClient的简单使用
在android 2.2及以下版本中HttpUrlConnection存在着一些bug(建议使用HttpClient) 建议在android 2.3以后使用HttpUrlConnection
专注APP开发
2019/11/07
7330
HttpURLConnection,HttpClient的简单使用
点击加载更多

相似问题

Android:尝试HttpURLConnection.getOutputStream()时抛出SocketException

15

在访问HttpsURLConnection后连接到HttpURLConnection时出现SocketException

11

安卓- HttpUrlConnection没有关闭。最终结果为SocketException

47

java.net.SocketException:使用页面GET上的HttpURLConnection重置连接

182

HttpUrlConnection getOutputStream()抛出java.net.SocketException:服务器文件意外结束

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文