desert3 2010-07-08 14:46
浏览 220
已采纳

用url下载jpg文件的疑问(url)

百度图片地址:http://t2.baidu.com/it/u=%68%74%74%70%3a%2f%2f%6e%65%77%73%2e%6e%65%6e%2e%63%6f%6d%2e%63%6e%2f%69%6d%61%67%65%6c%69%73%74%2f%31%30%2f%32%38%2f%37%34%30%76%67%71%39%79%34%32%6a%74%2e%6a%70%67&fm=30

这个地址copy到ie地址栏可以正常地显示图片,当我要用下面的代码下载的时候出错:Exception in thread "main" java.net.SocketException: Unexpected end of file from server
我用其他方式访问的时候有时候提示文件没有正常结束的错误
有知道怎么通过代码下载上面的jpg文件或者我下面额代码哪里写错了吗?3x

FileUtils和IOUtils来自Apache Common io包
File file = new File("D:\a.jpg");
FileUtils.writeByteArrayToFile(file,IOUtils.toByteArray(new URL(
"http://t2.baidu.com/it/u=%68%74%74%70%3a%2f%2f%6e%65%77%73%2e%6e%65%6e%2e%63%6f%6d%2e%63%6e%2f%69%6d%61%67%65%6c%69%73%74%2f%31%30%2f%32%38%2f%37%34%30%76%67%71%39%79%34%32%6a%74%2e%6a%70%67&fm=30").openStream()));

  • 写回答

4条回答 默认 最新

  • berlou 2010-07-08 16:11
    关注

    判断一下是不是被redirect了,如果是的话,则取出Location对应的值,再发一个URL请求。 下面是大致思路。
    URLConnection connection = url.openConnection();
    if (connection instanceof HttpURLConnection) {
    HttpURLConnection http = (HttpURLConnection) connection;
    http.setInstanceFollowRedirects(false);
    int responseCode = http.getResponseCode();
    System.out.println(responseCode);
    boolean redirected = ((responseCode >= 300) && (responseCode <= 399));
    if (redirected) {
    String redirect = connection.getHeaderField("Location");
    URL url2 = null;
    if (redirect.startsWith("http")) {
    url2 = new URL(redirect);
    } else {
    url2 = new URL(url, redirect);
    }
    。。。。。。。。。
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R