微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ResponseCode 400 用于从网址下载图片

如何解决ResponseCode 400 用于从网址下载图片

这是我为从 url 下载图像而编写的代码,但使用 java.io.FilenotFoundException 接收响应代码 400

@Override
protected Void doInBackground(String... strings) {

    try {
        URL url = new URL(strings[0]);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("User-Agent","Mozilla/5.0 
        (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) 
        Gecko/20100316 Firefox/3.6.2");
        con.setRequestMethod("GET");
        con.setDoOutput(true);
        con.connect();

        File file = Environment.getExternalStorageDirectory();
        File f1 = new File(file,"_Url download");
        if(!f1.exists()){
            f1.mkdir();
        }

        fileName = System.currentTimeMillis() + ".jpg";

        File f2 = new File(f1,fileName);
        f2.createNewFile();

        InputStream er = con.getErrorStream();
        Log.i("ErrorCode",con.getResponseCode()+"");
        Log.i("ErrorMessage",con.getResponseMessage());
        Log.i("ErrorStream",er+"");

        InputStream in = con.getInputStream();
        FileOutputStream out = new FileOutputStream(f2);

        byte[] buffer = new byte[1024];
        int len;

        System.out.println(Arrays.toString(buffer));

        while((len = in.read(buffer,1024)) > 0) {
            out.write(buffer,len);
        }

        out.close();
        in.close();

    } catch (MalformedURLException e) {
        e.printstacktrace();
    } catch (ProtocolException e) {
        e.printstacktrace();
    } catch (IOException e) {
        Log.i("IOException",e.toString());
    }
    return null;
} 

日志

2021-06-26 09:26:25.532 26760-26890/com.example.urldownload I/ErrorCode: 400

2021-06-26 09:26:25.533 26760-26890/com.example.urldownload I/ErrorMessage: Bad Request

2021-06-26 09:26:25.533 26760-26890/com.example.urldownload I/Errorstream: buffer(com.android.okhttp.internal.http.Http1xStream$FixedLengthSource@fbb2c70).inputStream()

2021-06-26 09:26:25.534 26760-26890/com.example.urldownload I/IOException: java.io.FileNotFoundException: https://instagram.fidr1-1.fna.fbcdn.net/v/t51.2885-15/e35/190664842_184685183538740_5039921250568173600_n.jpg?tp=1&_nc_ht=instagram.fidr1-1.fna.fbcdn.net&_nc_cat=108&_nc_ohc=RrEU4lTwYCwAX-vgVQ4&edm=AABBvjUBAAAA&ccb=7-4&oh=3ac34be54793fa59134380fd9e0bd617&oe=60DCB7E6&_nc_sid=83d603

清单

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

保存图像的文件的图像

For more details look at this image

我应该怎么做来解决这个错误或者有什么更好的方法来做到这一点

解决方法

使用 picasso 将图像保存在外部存储中,您可以执行以下操作

  private Target mTarget = new Target() {
  @Override
  public void onBitmapLoaded(Bitmap bitmap,Picasso.LoadedFrom from) {
      // Perform simple file operation to store this bitmap
  }

  @Override
  public void onBitmapFailed(Drawable errorDrawable) {
  }

  @Override
  public void onPrepareLoad(Drawable placeHolderDrawable) {
  }
  }

...

Picasso.with(this).load("url").into(mTarget);

这里的“Target”是毕加索提供的一个类,它的理解方法非常简单…… 这是一个简单的方法

,

由于缺少提供的代码,很难找出可能导致错误的原因。我最好的猜测是使用 DownloadManager 而不是 AsyncTask。

下载管理器是一种处理长时间运行的 HTTP 下载的系统服务。客户端可能会请求将 URI 下载到特定目标文件。下载管理器将在后台进行下载,处理 HTTP 交互并在失败或连接更改和系统重新启动后重试下载。 (https://developer.android.com/reference)

,

我错了。 谢谢大家分享你的想法

con.setDoOutput(true);是一个POST方法 它不获取任何数据

con.setDoOutput(true);不应使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?