为何用setRequestMethod(“GET”)下载不到资源

     下面是一个下载资源的类,之前研究了很久,发现地址什么的都是对的,就是从网上下载不到数据,运行后的文件时0KB,最后在网上找了很久发现很多人都遇到了这个问题,就是要把httpurlconnection.setDoOutput(true)这一句给删了就没问题了。


public class Downloader {

public static void DownloadFile(String fileURL, File directory) {
         try {
                 
                 FileOutputStream f = new FileOutputStream(directory);
                 URL u = new URL(fileURL);
                 HttpURLConnection c = (HttpURLConnection) u.openConnection();               

       //httpurlconnection.setRequestMethod("GET"); 这一句可要可不要,缺省就是get

       //httpurlconnection.setDoOutput(true); 这一句不要,加了这一句后,即使有上面的“GET”仍然会用“POST”方法发送

                 c.connect();
                 
                 InputStream in = c.getInputStream();
                 byte[] buffer = new byte[1024];
                 int len1 = 0;
                 while ((len1 = in.read(buffer)) > 0) {
                    Log.v("test",buffer.toString());
                         f.write(buffer, 0, len1);
                         
                 }
                 f.close();
         } catch (Exception e) {
                 e.printStackTrace();
         }


}


}

             httpUrlConnection.setDoOutput(true);以后就可以使用conn.getOutputStream().write() 

             httpUrlConnection.setDoInput(true);以后就可以使用conn.getInputStream().read();  

             get请求用不到conn.getOutputStream(),因为参数直接追加在地址后面,因此默认是false。 

             post请求(比如:文件上传)需要往服务区传输大量的数据,这些数据是放在http的body里面的,因此需要在建立连接以后,往服务端写数据。  因为总是使用conn.getInputStream()获取服务端的响应,因此默认值是true。  

           public void setDoInput(boolean doinput)将此 URLConnection 的 doInput 字段的值设置为指定的值。   

            URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。 

            public void setDoOutput(boolean dooutput)将此 URLConnection 的 doOutput 字段的值设置为指定的值。   

            如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值