Java下http下载文件客户端和上传文件客户端实例代码

yizhihongxing

让我为您详细讲解Java下http下载文件客户端和上传文件客户端实例代码的完整攻略。

一、http下载文件客户端代码示例

1.1 通过Java SE自带库实现

使用Java SE自带库实现简单的http下载文件客户端代码,只需要用到Java SE自带的URL和HttpURLConnection两个类即可。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpDownloadClient {
    public static void downloadFile(String downloadUrl, String savePath) throws IOException {
        URL url = new URL(downloadUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(5000); // 设置连接超时时间为5秒
        conn.setRequestMethod("GET"); // 设置请求方法为GET
        BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(savePath));
        byte[] buffer = new byte[1024];
        int len;
        while ((len = bis.read(buffer)) != -1) {
            bos.write(buffer, 0, len);
        }
        bis.close();
        bos.close();
        conn.disconnect();
    }
}

在使用该代码的时候,只需要调用downloadFile方法,传入文件下载链接和保存路径即可。比如下载百度的logo,保存在本地的D:/filename.png,示例如下:

public static void main(String[] args) {
    try {
        String downloadUrl = "http://www.baidu.com/img/bd_logo1.png";
        String savePath = "D:/filename.png";
        HttpDownloadClient.downloadFile(downloadUrl, savePath);
        System.out.println("Download successed!");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

1.2 使用Apache的HttpClient库实现

由于Java自带的库比较简单,一些高级的操作都没有提供接口或者比较薄弱,因此,Apache曾经开发了一个类库——HttpClient,该类库提供了很多比Java SE自带库强的特性,如连接池、多线程、身份验证、重定向、Cookie自动管理等。使用HttpClient下载文件非常简单,只需调用实例中的execute方法即可。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpDownloadClient {
    public static void downloadFile(String downloadUrl, String savePath) throws Exception {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        URIBuilder uriBuilder = new URIBuilder(downloadUrl);
        HttpGet httpGet = new HttpGet(uriBuilder.build());
        HttpResponse response = httpClient.execute(httpGet);
        HttpEntity entity = response.getEntity();
        InputStream inputStream = entity.getContent();
        FileOutputStream fileOutputStream = new FileOutputStream(savePath);
        byte[] buffer = new byte[1024];
        int len;
        while ((len = inputStream.read(buffer)) != -1) {
            fileOutputStream.write(buffer, 0, len);
        }
        fileOutputStream.close();
        inputStream.close();
        EntityUtils.consume(entity);
        httpClient.close();
    }
}

下载方法的使用方式和之前的Java SE自带库示例是一致的,只需调用downloadFile方法传入文件下载链接和保存路径即可。

二、http上传文件客户端代码示例

2.1 使用Java SE自带库实现

使用Java SE自带库实现简单的http上传文件客户端代码,同样只需要用到Java SE自带的URL和HttpURLConnection两个类即可。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUploadClient {
    public static void uploadFile(String uploadUrl, String filePath) throws IOException {
        File file = new File(filePath);
        HttpURLConnection conn = (HttpURLConnection) new URL(uploadUrl).openConnection();
        conn.setDoOutput(true); // 设置为POST请求
        conn.setRequestMethod("POST"); // 设置请求方法为POST
        OutputStream os = conn.getOutputStream();
        FileInputStream fis = new FileInputStream(file);
        byte[] buffer = new byte[1024];
        int len;
        while ((len = fis.read(buffer)) != -1) {
            os.write(buffer, 0, len);
        }
        fis.close();
        os.close();
        int respCode = conn.getResponseCode(); // 获取响应码
        if (respCode == HttpURLConnection.HTTP_OK) {
            System.out.println("Upload successed!");
        } else {
            System.out.println("Upload failed:" + respCode);
        }
    }
}

在使用该代码的时候,只需要调用uploadFile方法,传入文件上传链接和要上传的文件路径即可。比如上传本地的D:/test.txt文件到一个叫做upload的服务器:

public static void main(String[] args) {
    try {
        String uploadUrl = "http://upload.com/api/upload";
        String filePath = "D:/test.txt";
        HttpUploadClient.uploadFile(uploadUrl, filePath);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

2.2 使用Apache的HttpClient库实现

使用HttpClient库实现上传文件同样很简单,只需构造HttpPost对象,然后设置上传的文件,再调用实例中的execute方法即可。

import java.io.File;
import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpUploadClient {
    public static void uploadFile(String uploadUrl, String filePath) throws Exception {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(uploadUrl);
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addPart("file", new FileBody(new File(filePath), ContentType.DEFAULT_BINARY));
        HttpEntity httpEntity = builder.build();
        httpPost.setEntity(httpEntity);
        HttpResponse response = httpClient.execute(httpPost);
        HttpEntity entity = response.getEntity();
        String responseMsg = EntityUtils.toString(entity, "UTF-8");
        EntityUtils.consume(entity);
        httpClient.close();        

        int respCode = response.getStatusLine().getStatusCode(); // 获取响应码
        if (respCode == HttpURLConnection.HTTP_OK) {
            System.out.println("Upload successed!");
            System.out.println("Response message: " + responseMsg);
        } else {
            System.out.println("Upload failed:" + respCode);
        }
    }
}

上传方法的使用方式和之前的Java SE自带库示例是一致的,只需调用uploadFile方法传入文件上传链接和要上传的文件路径即可。

以上就是Java下http下载文件客户端和上传文件客户端的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java下http下载文件客户端和上传文件客户端实例代码 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • VB6.0工具箱怎么添加拓展控件快捷方式?

    要在VB6.0工具箱中添加拓展控件的快捷方式,可以按照以下步骤进行操作: 打开VB6.0开发环境,并创建一个新的工程文件。 在VB6.0的工具箱中,右键单击任意控件图标,然后选择“添加/删除项目”。 在弹出的“组件”对话框中,选择“浏览”按钮。 找到拓展控件DLL文件所在的文件夹,并选择该DLL文件,然后单击“确定”按钮。 在“组件”对话框的“选中的控件”列…

    other 2023年6月27日
    00
  • jquery判断checkbox是否被选中4种方法

    以下是详细讲解“jQuery判断checkbox是否被选中4种方法”的完整攻略,过程中至少包含两条示例说明的标准Markdown格式文本: jQuery判断checkbox是否被选中4种方法 在jQuery中,checkbox是否被选中是一种常见的操作。本文将介绍4种判断checkbox是否被选中的方法。 方法1:使用prop()方法 prop()方法用于获…

    other 2023年5月10日
    00
  • eclipse android logcat只显示自己应用程序信息的设置方法

    以下是设置Eclipse Android Logcat只显示自己应用程序信息的方法的完整攻略: 打开Eclipse,并导航到菜单栏的\”Window\” -> \”Show View\” -> \”Other\”。 在弹出的窗口中,选择\”Android\”文件夹,然后选择\”LogCat\”视图。 在LogCat视图中,找到过滤器栏(Filte…

    other 2023年10月14日
    00
  • SpringBoot实现第一次启动时自动初始化数据库的方法

    实现SpringBoot第一次启动时自动初始化数据库,可以通过在应用启动时执行SQL脚本的方式来实现,下面是实现方法的详细攻略。 步骤一:编写sql脚本 首先,我们需要编写一个初始化数据库的sql脚本,这个脚本应该包含所需要创建的数据库和表的信息,以及所需初始化的数据。一般将这个脚本命名为schema.sql,存放在src/main/resources目录下…

    other 2023年6月20日
    00
  • python实战学习之matplotlib绘图

    Python实战学习之matplotlib绘图 Python是一种简洁易懂、功能强大的编程语言,广泛应用于数据处理、科学计算、web开发等各个领域。其中,matplotlib是Python中最流行的绘图库之一,其灵活的API和丰富的功能,使它成为数据可视化的重要工具。本文将介绍如何使用Python中matplotlib库进行数据可视化绘图并实现各种有趣的图表…

    其他 2023年3月28日
    00
  • MFC创建右键弹出菜单的方法

    下面是详细讲解MFC创建右键弹出菜单的方法的完整攻略: 1. 准备工作 在创建MFC程序的时候,我们需要在资源视图中新建一个菜单资源文件,并且给这个菜单资源文件命名,如“MenuDemo”。 2. 定义触发右键弹出菜单的控件 在MFC程序的窗口中,我们可以为某个控件添加右键弹出菜单,当用鼠标右键单击该控件时,就会弹出设定好的菜单。在MFC中,我们需要为该控件…

    other 2023年6月27日
    00
  • Oracle客户端的安装与远程连接配置方法分享

    下面我就详细讲解一下“Oracle客户端的安装与远程连接配置方法分享”的完整攻略。 安装Oracle客户端 首先,到Oracle官网下载适合自己操作系统和Oracle版本的客户端压缩包。 解压下载的客户端文件至任意目录,例如 C:\oracle。 配置环境变量:将 C:\oracle 添加至系统环境变量中的 PATH 变量中。 配置客户端远程连接 通过 tn…

    other 2023年6月25日
    00
  • 配置F5 负载均衡(转)

    配置F5 负载均衡(转) 负载均衡是现代网络中非常重要的一环,能够帮助我们分摊网络流量,同时增强服务可用性和可靠性。F5作为著名的应用交付和负载均衡解决方案,提供了非常丰富的负载均衡功能和配置选项。 本文将详细介绍如何通过F5负载均衡器来配置负载均衡,以实现更优秀的网络负载均衡效果。 准备工作 在开始配置之前,我们需要做好一些准备工作,包括: 拥有F5负载均…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部