后端请求接口

如果有更好的方法 可以在评论留下链接

1.添加相关依赖

<!-- feign-okhttp -->
<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign-okhttp</artifactId>
	<version>11.7</version>
</dependency>

1.get请求

/**
  * OkHttpClient Get请求
  * @param url 请求地址
  * @return
  */
public Result<?> httpClientGet (String url) {
        try {
            Response lsresponse = null;
            OkHttpClient lsclients = new OkHttpClient().newBuilder()
                    .build();
            Request lsrequest = new Request.Builder()
                    .url(url)
                    .get()
                    .build();
            lsresponse = lsclients.newCall(lsrequest).execute();
            if (lsresponse.isSuccessful()) {
                return Result.ok(lsresponse.body().string());
            }else {
                return Result.error("请求数据错误!");
            }
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("数据接口请求失败");
        }
 }

请求时如果需要加header 可直接在addHeader中添加 

2.Post请求

/**
  * OkHttpClient Post请求
  * @param url 请求地址
  * @param bodys 请求体传参
  * @param token 请求token
  * @return
  */
 public Result<?> httpClientPost (String url , String bodys, String token) {
        try {
            Response lsresponse = null;
            OkHttpClient lsclients = new OkHttpClient().newBuilder()
                    .build();
            MediaType lsmediaTypes = MediaType.parse("application/json");
            RequestBody body = RequestBody.create(lsmediaTypes, bodys);
            Request lsrequest = new Request.Builder()
                    .url(url)
                    .method("POST", body)
                    .addHeader("Authorization",token)
                    .addHeader("Content-Type", "application/json")
                    .build();
            lsresponse = lsclients.newCall(lsrequest).execute();
            if (lsresponse.isSuccessful()) {
                return Result.ok(lsresponse.body().string());
            }else {
                return Result.error("请求数据错误!");
            }
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("数据接口请求失败");
        }
    }

3.文件上传

感觉这种文件上传性能比较低,请求慢,目前我还没写过其他的文件上传请求 

/**
 *param doPostMulti post请求
 *param filePath 文件地址
 *param dataId 数据id
 */
public String doPostMulti(String filePath,String dataId) {
        Result result = httpClient.getToken(tokenUrl);
        String token = result.getMessage();
        // 创建Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        String resultString = "";
        try {
            // 创建Http Post请求
            HttpPost httpPost = new HttpPost(uploadUrl);
            URL url2 = new URL(filePath);
            URLConnection urlConn = url2.openConnection();
            InputStream input = urlConn.getInputStream();
            // 创建请求内容
            MultipartEntityBuilder builder =                 
            MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
            builder.addBinaryBody("file", input, ContentType.DEFAULT_BINARY, 
            filePath.substring(filePath.indexOf("=")+1));
            builder.addTextBody("dataId", dataId);
            builder.setContentType(ContentType.MULTIPART_FORM_DATA);
            builder.setBoundary("----egevgdsewgeagdvsdfergergsvgds");//随机字符串
            builder.setCharset(UTF_8);
            HttpEntity entity = builder.build();
            httpPost.setEntity(entity);
            httpPost.addHeader("Authorization", token);
            // 执行http请求
            response = httpClient.execute(httpPost);
            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                response.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        return resultString;
    }

4.附加处理

可能有更好的处理方式,我暂时使用的是这种

        list格式数据处理

//data为请求的返回值,为字符串类型  lsresponse.body().string()
List<Map> arrayList = new ArrayList();
SONObject object = JSONObject.parseObject(data);
String datalist = object.getString("data");
CollectionType listType = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, Map.class);
arrayList = objectMapper.readValue(datalist, listType);

        map格式数据处理

//data为请求的返回值,为字符串类型  lsresponse.body().string()
Map<String, Object> hashMap = new HashMap<>();
JSONObject object = JSONObject.parseObject(data);
String datalist = object.getString("result");
MapType mapType = objectMapper.getTypeFactory().constructMapType(Map.class, String.class, Object.class);
hashMap = objectMapper.readValue(datalist, mapType);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值