HttpService

Posted guchunchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpService相关的知识,希望对你有一定的参考价值。

 

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.thc.rcm.common.service;

import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.parser.Feature;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.thc.rcm.common.dto.ThcResponse;
import com.thc.rcm.common.interceptor.SessionUtil;
import com.thc.rcm.common.utils.DateUtils;
import com.thc.rcm.common.utils.JsonUtil;
import com.thc.rcm.common.utils.LogUtils;
import com.thc.rcm.common.utils.JsonUtil.JsonObject;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.client.utils.URIBuilder;
import org.apache.http.cookie.Cookie;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.bytesoft.bytetcc.supports.radicate.rpc.RpcResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

@Service
@Lazy(false)
public class HttpService {
    private static final Gson gson = (new GsonBuilder()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
    @Autowired
    private CloseableHttpClient httpClient;
    @Autowired
    private RequestConfig requestConfig;

    public HttpService() {
    }

    public String doGet(String url) throws IOException {
        CloseableHttpResponse response = null;
        HttpGet httpGet = new HttpGet(url);
        httpGet.setConfig(this.requestConfig);
        httpGet.addHeader("x-access-token", SessionUtil.getToken());

        try {
            response = this.httpClient.execute(httpGet);
            if (response.getStatusLine().getStatusCode() == 200) {
                String var4 = EntityUtils.toString(response.getEntity(), "UTF-8");
                return var4;
            }

            LogUtils.printfCallback().info("url>" + url + "return" + response);
        } finally {
            if (response != null) {
                response.close();
            }

        }

        return null;
    }

    public String doGet(String url, String token) throws IOException {
        CloseableHttpResponse response = null;
        HttpGet httpGet = new HttpGet(url);
        httpGet.setConfig(this.requestConfig);
        httpGet.addHeader("x-access-token", token);

        try {
            response = this.httpClient.execute(httpGet);
            if (response.getStatusLine().getStatusCode() == 200) {
                String var5 = EntityUtils.toString(response.getEntity(), "UTF-8");
                return var5;
            }

            LogUtils.printfCallback().info("url>" + url + "return" + response);
        } finally {
            if (response != null) {
                response.close();
            }

        }

        return null;
    }

    public JsonObject getJson(String url, String token) throws IOException {
        String s = this.doGet(url, token);
        return JsonUtil.stringTojson(s);
    }

    public JsonObject getJson(String url) throws IOException {
        String s = this.doGet(url);
        return JsonUtil.stringTojson(s);
    }

    public JsonObject getJson(String url, Map<String, Object> paramMap) throws IOException {
        String s = null;

        try {
            s = this.doGet(url, paramMap);
        } catch (URISyntaxException var5) {
            var5.printStackTrace();
        }

        return JsonUtil.stringTojson(s);
    }

    public String doGet(String url, Map<String, Object> paramMap) throws IOException, URISyntaxException {
        URIBuilder builder = new URIBuilder(url);
        Iterator var4 = paramMap.keySet().iterator();

        while(var4.hasNext()) {
            String s = (String)var4.next();
            builder.addParameter(s, paramMap.get(s).toString());
        }

        return this.doGet(builder.build().toString());
    }

    public JsonObject getKdSession(String url, String login) throws IOException {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        String sessionid = null;
        if (login != null) {
            StringEntity stringEntity = new StringEntity(login, ContentType.APPLICATION_JSON);
            httpPost.setEntity(stringEntity);
        }

        CloseableHttpResponse response = null;

        HttpResult res;
        try {
            CookieStore cookieStore = new BasicCookieStore();
            this.httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
            response = this.httpClient.execute(httpPost);
            List<Cookie> cs = cookieStore.getCookies();
            int i = 0;

            while(true) {
                if (i < cs.size()) {
                    if (!((Cookie)cs.get(i)).getName().equals("kdservice-sessionid")) {
                        ++i;
                        continue;
                    }

                    sessionid = ((Cookie)cs.get(i)).getValue();
                }

                res = new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(response.getEntity(), "UTF-8"));
                break;
            }
        } finally {
            if (response != null) {
                response.close();
            }

        }

        JsonObject resJson = JsonUtil.stringTojson(res.getData());
        resJson.put("kdservice-sessionid", sessionid);
        return resJson;
    }

    public String doKdPost(String url, String json, String session) throws IOException {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        httpPost.addHeader("kdservice-sessionid", session);
        if (json != null) {
            StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON);
            httpPost.setEntity(stringEntity);
        }

        CloseableHttpResponse response = null;

        HttpResult res;
        try {
            response = this.httpClient.execute(httpPost);
            res = new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(response.getEntity(), "UTF-8"));
        } finally {
            if (response != null) {
                response.close();
            }

        }

        return res.getData();
    }

    public HttpResult doPost(String url, Map<String, String> paramMap) throws IOException {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        httpPost.addHeader("x-access-token", SessionUtil.getToken());
        if (paramMap != null) {
            List<NameValuePair> parameters = new ArrayList();
            Iterator var5 = paramMap.keySet().iterator();

            while(var5.hasNext()) {
                String s = (String)var5.next();
                parameters.add(new BasicNameValuePair(s, (String)paramMap.get(s)));
            }

            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters, Charset.forName("UTF-8"));
            httpPost.setEntity(formEntity);
        }

        CloseableHttpResponse response = null;

        HttpResult var11;
        try {
            response = this.httpClient.execute(httpPost);
            LogUtils.printfCallback().info("url>" + url + "param>" + paramMap + "return>" + response);
            var11 = new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(response.getEntity()));
        } finally {
            if (response != null) {
                response.close();
            }

        }

        return var11;
    }

    public HttpResult doPost(String url) throws IOException {
        return this.doPost(url, (Map)null);
    }

    public JsonObject postResult(String url) throws IOException {
        String s = this.doPost(url).getData();
        return JsonUtil.stringTojson(s);
    }

    public JsonObject postResult(String url, String json) throws IOException {
        long beginTime = System.currentTimeMillis();
        String s = null;
        s = this.doPostJson(url, json).getData();
        long endTime = System.currentTimeMillis();
        LogUtils.commonLog().info("请求工程耗时: {}  URI:{}", DateUtils.formatDateTime(endTime - beginTime), url);
        return s != null && !s.equals("") ? JsonUtil.stringTojson(s) : new JsonObject();
    }

    public JsonObject postResult(String url, String json, String session) throws IOException {
        String s = null;
        s = this.doPostJson(url, json, session).getData();
        return s != null && !s.equals("") ? JsonUtil.stringTojson(s) : new JsonObject();
    }

    public RpcResult postRpcResult(String url, String json) throws IOException {
        String s = null;
        RpcResult result = new RpcResult();
        s = this.doPostJson(url, json).getData();
        if (s != null && !s.equals("")) {
            result.setValue(s);
            return result;
        } else {
            return result;
        }
    }

    public HttpResult doPostJson(String url, String json) throws IOException {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        httpPost.addHeader("x-access-token", SessionUtil.getToken());
        httpPost.addHeader("Content-Type", "application/json");
        if (json != null) {
            StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON);
            httpPost.setEntity(stringEntity);
        }

        CloseableHttpResponse response = null;

        HttpResult res;
        try {
            response = this.httpClient.execute(httpPost);
            LogUtils.printfCallback().info("url>" + url + "param>" + json + "return>" + response);
            res = new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(response.getEntity(), "UTF-8"));
        } finally {
            if (response != null) {
                response.close();
            }

        }

        return res;
    }

    public HttpResult doPostJson(String url, String json, String session) throws IOException {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        if (session != null) {
            httpPost.addHeader("x-access-token", session);
        }

        if (json != null) {
            StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON);
            httpPost.setEntity(stringEntity);
        }

        CloseableHttpResponse response = null;

        HttpResult var6;
        try {
            response = this.httpClient.execute(httpPost);
            LogUtils.printfCallback().info("url>" + url + "param>" + json + "return>" + response);
            var6 = new HttpResult(response.getStatusLine().getStatusCode(), EntityUtils.toString(response.getEntity(), "UTF-8"));
        } finally {
            if (response != null) {
                response.close();
            }

        }

        return var6;
    }

    public <T> T doPostJson(String url, Object entity, String token, TypeReference<T> type) {
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(this.requestConfig);
        String requestJson = null;
        if (token != null) {
            httpPost.addHeader("x-access-token", token);
        }

        if (entity != null) {
            requestJson = gson.toJson(entity);
            StringEntity stringEntity = new StringEntity(requestJson, ContentType.APPLICATION_JSON);
            httpPost.setEntity(stringEntity);
        }

        CloseableHttpResponse response = null;

        Object var9;
        try {
            response = this.httpClient.execute(httpPost);
            if (response.getStatusLine().getStatusCode() != 200) {
                throw new RuntimeException(String.format("request url:%s with requestBody %s get response %s", url, requestJson, response));
            }

            ThcResponse<T> thcResponse = (ThcResponse)JSON.parseObject(EntityUtils.toString(response.getEntity(), "UTF-8"), new TypeReference<ThcResponse<T>>() {
            }, new Feature[0]);
            var9 = JSON.parseObject(JSONUtils.toJSONString(thcResponse.getSuccessData()), type, new Feature[0]);
        } catch (IOException var18) {
            throw new RuntimeException(String.format("request url:%s with request body %s", url, requestJson), var18);
        } finally {
            if (response != null) {
                try {
                    response.close();
                } catch (IOException var17) {
                    var17.printStackTrace();
                }
            }

        }

        return var9;
    }
}

  

 

以上是关于HttpService的主要内容,如果未能解决你的问题,请参考以下文章

HttpService与WebService的差异

NestJS:记录来自 HttpService 调用的请求/响应?

如何使用 jest 测试 HttpService.Post 调用

如何将参数发送到 HTTPService 调用以作为组件重用

NestJS 将 Authorization 标头传递给 HttpService

HttpService