首页 > Web开发 > 详细

httpurlconnection下载pdf文件打不开的原因,和解决代码

时间:2018-12-23 00:04:15      阅读:356      评论:0      收藏:0      [点我收藏+]

前几天遇见一个问题,httpurlconnection发送请求下载pdf文件的时候,文件是下载下来了,但是打不开。

之前并没有对pdf操作的相关功能,所以一直是使用的字符流读取内容。

字符流主要针对一些文本文档(比字节流操作的效率要高),比如.txt、.doc,而pdf就不行。 
字节流几乎可以对任何文件类型进行操作,主要是对非文件类型的,如媒体文件(音频,视频,图片…)。

//之前使用reader读取返回内容
BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));

修改后,可以读pdf文件

//修改为input读取返回内容
BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());

 

 

整个下载功能代码

package com.myitext.test;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Httpurlconnection下载pdf文件
 * @author Admin
 *
 */
public class HttpurlconnectionTest {
    
           public void downPdf(String urlPath,String content) {
                try {
                    URL url=new URL(urlPath);
                    HttpURLConnection con=(HttpURLConnection)url.openConnection();
                     
                    //设置参数
                    con.setDoOutput(true);     //需要输出 POST请求
                    con.setDoInput(true);      //需要输入
                    con.setUseCaches(false);   //不允许缓存
                    con.setRequestMethod("POST");      //设置POST方式连接
                     
                    //设置请求属性
                    con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    con.setRequestProperty("Connection", "Keep-Alive");
                    con.setRequestProperty("Charset", "UTF-8");
                   con.connect();
                         
                    //建立输入流,向指向的URL传入参数 POST请求
                    DataOutputStream dos=new DataOutputStream(con.getOutputStream());
                    dos.writeBytes(content);
                    dos.flush();
                    dos.close();
                     
                    //获得响应状态
                    int resultCode=con.getResponseCode();
                    if(HttpURLConnection.HTTP_OK==resultCode){
              //代码修改的主要地方 BufferedInputStream bin
= new BufferedInputStream(con.getInputStream()); File file = new File("D:/pdf/target.pdf"); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } OutputStream out = new FileOutputStream(file);
              //如果是reader,size就是String类型了,while循环也要相应的修改
int size = 0; byte[] buf = new byte[1024]; while ((size = bin.read(buf)) != -1) { out.write(buf, 0, size); } bin.close(); out.close(); } } catch (Exception e) { e.printStackTrace(); } } }

 

 

 

httpurlconnection下载pdf文件打不开的原因,和解决代码

原文:https://www.cnblogs.com/wpy123/p/10162900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!