上传和下载的测试代码

上传和下载的测试代码

1. 所需依赖坐标

        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java-util</artifactId>
            <version>3.1.0</version>
        </dependency>


        <!-- apche httpclient的maven依赖-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.3.2</version>
        </dependency>

2. 测试代码

package com.hexin.test;

import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.hexin.protobuf.ProtoEntityUtil;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.sql.SQLOutput;
import java.util.List;

public class TestHttpClient1 {

    /**
     * 上传方法
     * 参数为 表单形式 多为 post请求
     */
    @Test
    public void uploadRequst() throws IOException {
        // 创建表单的构造器
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        // 表单添加文本信息
        builder.addTextBody("Id123","虎虎生威");
        // 表单添加流(读取本地文件)
        InputStreamBody inputStreamBody = new InputStreamBody((InputStream) new FileInputStream("d:/text.txt"),"utf-8");
        //builder.addBinaryBody("Id222",inputStreamBody.getInputStream());

        System.out.println("builder  :  "+builder.toString());

        System.out.println("---------开始上传----------");
        // 创建HttpClient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        CloseableHttpResponse response = null;

        // 创建URL
        String url =
                //"http://cs.10jqka.com.cn/multiStorage?reqtype=upload&appname=blockstock&storepath=/hq";
                "https://cs.10jqka.com.cn/multiStorage?reqtype=upload&appname=blockstock&userid=622241656&sessionid=1cf373c85dc5d7d57ccd3e016e33be99f&expires=2022-02-23+10%3A32%3A33&token=NHDIONIEAOCBCNEKDFEALKMOEIIHJELICGIAOGGCKLIKFJMLOFIPADHBGIFNCHEEOGGHLAIMEAINGGOPMMKPIKGHFPFEILNLKKEMCEPAPOOHAPIINCPLPIOMCNAIKNBFBPLIPOKDJODMPPEDIJIPACNKBDDBIFJMDPAFEMEMNEPIFBAEDEOJMFMHOOMIJAJLGJJDKILICDALADDKLHCJBBPKGGKPOKMFDCGJPOJBDJBEHABEDHADJDMPFKKPAGJG&storepath=/&version=2";
        // 创建 httpPost
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(builder.build()); // 将表单封装进请求
        // 执行请求
        response = httpclient.execute(httpPost);
        // 返回报文 通过uploadresponse
        ProtoEntityUtil.UploadResponse uploadResponse = ProtoEntityUtil.UploadResponse.parseFrom(response.getEntity().getContent());
        int code =uploadResponse.getCode();
        System.out.println("code : " + code);
        long version = uploadResponse.getVersion();
        System.out.println("version : " + version);

        System.out.println("-------------上传结束-----------------");
    }

    /**
     * 下载方法
     * 请求下载基本少有参数, 多为get请求
     */
    @Test
    public void downLoadTest() throws IOException {
        // 创建HttpClient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        // 创建URl
        String url =
                //"http://cs.10jqka.com.cn/multiStorage?reqtype=download&appname=pc_head&userid=622241656&sessionid=1cf373c85dc5d7d57ccd3e016e33be99f&expires=2022-02-23+10%3A32%3A33&token=NHDIONIEAOCBCNEKDFEALKMOEIIHJELICGIAOGGCKLIKFJMLOFIPADHBGIFNCHEEOGGHLAIMEAINGGOPMMKPIKGHFPFEILNLKKEMCEPAPOOHAPIINCPLPIOMCNAIKNBFBPLIPOKDJODMPPEDIJIPACNKBDDBIFJMDPAFEMEMNEPIFBAEDEOJMFMHOOMIJAJLGJJDKILICDALADDKLHCJBBPKGGKPOKMFDCGJPOJBDJBEHABEDHADJDMPFKKPAGJG&storepath=/hq";
                "https://cs.10jqka.com.cn/multiStorage?reqtype=download&appname=blockstock&userid=622241656&sessionid=1cf373c85dc5d7d57ccd3e016e33be99f&expires=2022-02-23+10%3A32%3A33&token=NHDIONIEAOCBCNEKDFEALKMOEIIHJELICGIAOGGCKLIKFJMLOFIPADHBGIFNCHEEOGGHLAIMEAINGGOPMMKPIKGHFPFEILNLKKEMCEPAPOOHAPIINCPLPIOMCNAIKNBFBPLIPOKDJODMPPEDIJIPACNKBDDBIFJMDPAFEMEMNEPIFBAEDEOJMFMHOOMIJAJLGJJDKILICDALADDKLHCJBBPKGGKPOKMFDCGJPOJBDJBEHABEDHADJDMPFKKPAGJG&storepath=/&version=2";
        // 创建httpGet请求
        HttpGet httpGet = new HttpGet(url);
        // 执行请求
        response = httpclient.execute(httpGet);
        System.out.println("------------开始下载-------------");
        // 返回报文 DownloadResponse
        ProtoEntityUtil.DownloadResponse downloadResponse = ProtoEntityUtil.DownloadResponse.parseFrom(response.getEntity().getContent());
        List<ProtoEntityUtil.EntityFile> fileList = downloadResponse.getFileList();
        System.out.println("code: " + downloadResponse.getCode());
        System.out.println("version: " + downloadResponse.getVersion());
        System.out.println("FileList.size: " + fileList.size());
        int i = 0;// 计数器
        for (ProtoEntityUtil.EntityFile file : fileList) {
            System.out.println("==============第" + ++i + "遍历============");
            System.out.println("*****开始解析*****");
            ProtoEntityUtil.EntityFile entityFile = ProtoEntityUtil.EntityFile.parseFrom(file.toByteArray());
            try{
                //System.out.println("entityFile.getId(): " + entityFile.getId());//<ByteString@25d250c6 size=2>
                ProtoEntityUtil.EntityFileId entityFileId = ProtoEntityUtil.EntityFileId.parseFrom(entityFile.getId());
                System.out.println("id1: " + entityFileId.getSn());
                //ProtoEntityUtil.EntityFileValue_YuanShuJu yuanshuju = ProtoEntityUtil.EntityFileValue_YuanShuJu.parseFrom(entityFile.getValue());

                if ( entityFileId.getSn() == 0) {
                    ProtoEntityUtil.EntityFileValue_YuanShuJu yuanshuju = ProtoEntityUtil.EntityFileValue_YuanShuJu.parseFrom(entityFile.getValue());
                    System.out.println("原数据: " + yuanshuju.getSortstr());
                } else {

                    ProtoEntityUtil.EntityFileValue entityFileValue = ProtoEntityUtil.EntityFileValue.parseFrom(entityFile.getValue());
                    System.out.println("value1: " + entityFileValue.getContext());
                    //System.out.println("value2: " + new String(entityFileValue.getContext().getBytes()));
                }
            }catch (Exception e){
                System.out.println("id:"+file.getId().toStringUtf8());

            }
            //System.out.println("file.getId(): " + new String(file.getId().toByteArray()));
            //System.out.println("file.getvalue(): " + new String(file.getValue().toByteArray()));
            //ProtoEntityUtil.EntityFile entityFile = ProtoEntityUtil.EntityFile.parseFrom(file.toByteArray());
            //ByteString id = entityFile.getId();
            //ByteString value = entityFile.getValue();*/

/*            try{
                ProtoEntityUtil.EntityFileId entityFileId = ProtoEntityUtil.EntityFileId.parseFrom(file.getId());
                System.out.println("entityid :" + entityFileId.getSn());
            }catch (Exception e){
                System.out.println("id:"+file.getId().toStringUtf8());
            }*/

/*            ProtoEntityUtil.EntityFileValue_YuanShuJu yuanshuju = ProtoEntityUtil.EntityFileValue_YuanShuJu.parseFrom(file.getValue());
            System.out.println("原数据:" + yuanshuju.getSortstr());*/

/*            System.out.println("id:" + id.toString());
            System.out.println("value: "+ value.toString());*/
        }
        System.out.println("-------下载结束------------------");
    }

}
上一篇:Java面试题之:Java软件开发面试题总结


下一篇:(转)SpringBoot实现MultipartFile文件上传