Java is used to upload files and HttpGet HttpPost an API request (included HttpPost upload files)

Java is used to upload files and HttpGet HttpPost an API request (included HttpPost upload files)

A, HttpPost upload files

public static String getSuffix(final MultipartFile file){
        if(file == null || file.getSize() == 0){
            return null;
        }
        String fileName = file.getOriginalFilename();
        return fileName.substring(fileName.lastIndexOf(".")+1);
    }
public static JSONObject uploadFile(String urlStr, MultipartFile file, String token) throws IOException {

        // 后缀
        String suffix = getSuffix(file);

        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost uploadFile = new HttpPost(urlStr);

        uploadFile.setHeader("authorization","Bearer " + token);

        DecimalFormat df = new DecimalFormat("#.##");
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        //  HTTP.PLAIN_TEXT_TYPE,HTTP.UTF_8
        builder.addTextBody("name", file.getOriginalFilename(), ContentType.create("text/plain", Consts.UTF_8));
        builder.addTextBody("size", df.format((double) file.getSize() / 1024), ContentType.TEXT_PLAIN);
        builder.addTextBody("suffix", suffix, ContentType.TEXT_PLAIN);

        // 把文件加到HTTP的post请求中
                // String filepath = "/user/test/123.png"
        // File f = new File(filepath);
        builder.addBinaryBody(
                "file",
                file.getInputStream(),
                                // new FileInputStream(f),
                ContentType.APPLICATION_OCTET_STREAM,
                file.getOriginalFilename()
        );

        HttpEntity multipart = builder.build();
        uploadFile.setEntity(multipart);
        CloseableHttpResponse response = httpClient.execute(uploadFile);
        HttpEntity responseEntity = response.getEntity();
        String sResponse= EntityUtils.toString(responseEntity, "UTF-8");
        JSONObject jsonObject = JSONObject.parseObject(sResponse);

        // {"code":1,"data":"7efb19980373dd90f5077576afa7481a","message":""}
        // {"code":401,"httpStatus":null,"data":"373656a2-baff-423a-93fb-704f51003509","message":"error"}

        return jsonObject;

    }

Two, HttpGet Get request to the API

In two ways:

  • Use the URL splicing, has been tested
  • Using a URI parameter configuration in a manner not tested

    1, splicing in the URL

CloseableHttpClient httpClient = HttpClients.createDefault();
String urlStr ="http://abc.com/oss/getUrl?id=" + ossFileId;

HttpGet httpGet = new HttpGet(urlStr);
// 使用Oauth2进行权限验证
httpGet.setHeader("authorization","Bearer 34195fa8-00a6-4288-bda9-7d37541c3a39");
CloseableHttpResponse response = httpClient.execute(httpGet);

HttpEntity responseEntity = response.getEntity();
String sResponse= EntityUtils.toString(responseEntity, "UTF-8");
System.out.println(sResponse);
JSONObject jsonObject = JSONObject.parseObject(sResponse);
System.out.println(jsonObject);

2, the parameters manner

As the GET request parameters are assembled in the rear of the URL, so we have to build a URL, with parameters

        CloseableHttpClient httpClient = HttpClients.createDefault();
        
        URIBuilder uriBuilder = new URIBuilder("http://www.baidu.com");
        /** 第一种添加参数的形式 */
        /*uriBuilder.addParameter("name", "root");
        uriBuilder.addParameter("password", "123456");*/
        /** 第二种添加参数的形式 */
        List<NameValuePair> list = new LinkedList<>();
        BasicNameValuePair param1 = new BasicNameValuePair("name", "root");
        BasicNameValuePair param2 = new BasicNameValuePair("password", "123456");
        list.add(param1);
        list.add(param2);
        uriBuilder.setParameters(list);
        // 根据带参数的URI对象构建GET请求对象
        HttpGet httpGet = new HttpGet(uriBuilder.build());
        // 使用Oauth2进行权限验证
        httpGet.setHeader("authorization","Bearer 34195fa8-00a6-4288-bda9-7d37541c3a39");
        CloseableHttpResponse response = httpClient.execute(httpGet);

        HttpEntity responseEntity = response.getEntity();
        String sResponse= EntityUtils.toString(responseEntity, "UTF-8");
        System.out.println(sResponse);
        JSONObject jsonObject = JSONObject.parseObject(sResponse);
        System.out.println(jsonObject);

Guess you like

Origin www.cnblogs.com/codeobj/p/11670068.html