Okhttp3发送xml、json、文件的请求方法

  如果想了解xml与字符串之间的转换可以参考这个,JAVA工具类总结——xml字符串与对象的转换
  Okhttp3发送请求的写法比较简单,使用前先引入依赖,然后在使用方法即可。
  以下仅仅包括post方式发送xml字符串get请求获取jsonpost请求发送文件及参数这三种方法。

1、引入依赖
 <dependency>
    <groupId>com.squareup.okhttp3</groupId>
      <artifactId>okhttp</artifactId>
      <version>3.3.1</version>
  </dependency>
2、加入工具类
package znxd.video.bank.base;

import okhttp3.*;

import java.io.File;

/**
 * http请求工具类
 */
public class Okhttp3Utils {

    /**
     * xml格式post请求接口调用
     * @param url   接口地址
     * @param xmlStr   xml格式请求参数体
     * @return
     */
    public static String postXml(String url,String xmlStr){
        RequestBody body=RequestBody.create(MediaType.parse("application/xml"),xmlStr);
        Request requestOk = new Request.Builder()
                .url(url)
                .post(body)
                .build();

        Response response;
        try {
            response = new OkHttpClient().newCall(requestOk).execute();
            String jsonString = response.body().string();
            if(response.isSuccessful()){
                return jsonString;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }
        return "";
    }

    /**
     * get请求接口,返回json
     * @param url   接口地址
     * @return
     */
    public static String getJson(String url){
//        RequestBody body=RequestBody.create(MediaType.parse("application/json"),"");
        Request requestOk = new Request.Builder()
                .url(url)
                .get()
                .build();

        Response response;
        try {
            response = new OkHttpClient().newCall(requestOk).execute();
            String jsonString = response.body().string();
            if(response.isSuccessful()){
                return jsonString;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        }
        return "";
    }
 


    /**
     * 发送文件
     * @param url   请求接口地址
     * @param uploadDir  参数上传目录
     * @param baseFileUrl  文件保存基准路径
     * @param relativeUrl  文件保存的相对路径
     * @return  接口返回值
     * 该方法前端以formData格式传入,包括文件和参数,可一起传入。
     */
    public String uploadFilePost(String url,String uploadDir,String baseFileUrl,String relativeUrl){

        File temporaryFile = new File(baseFileUrl+relativeUrl);
        if(!temporaryFile.exists()){
            return "";
        }
        RequestBody requestBody = new MultipartBody.Builder()
                .addFormDataPart("uploadDir", uploadDir) //参数一,可注释掉
                .addFormDataPart("fileUrl", relativeUrl) //参数二,可注释掉
                .addFormDataPart("file", temporaryFile.getName(), RequestBody.create(MediaType.parse("application/octet-stream"),temporaryFile)) //文件一
                .build();
        Request requestOk = new Request.Builder()
                .url(url)
                .post(requestBody)
                .build();

        Response response;
        try {
            response = new OkHttpClient().newCall(requestOk).execute();
            String jsonString = response.body().string();
//			temporaryFile.delete();
            if(response.isSuccessful()){
                return jsonString;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁壮成长的凌大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值