Java接口对接二(URL方式之xml,json,form)

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

在这里先介绍 HttpClient的xml ,json和form表单格式的调用;对不同格式的可进行封装调用

public class HttpUtils {
    private static Logger Log  = LoggerFactory.getLogger(HttpUtils.class);


    // 1.使用get方式发送报文
    public static String getData(String url) {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet get = new HttpGet(url);
        try{
            CloseableHttpResponse response = client.execute(get);
            int statusCode = response.getStatusLine().getStatusCode();
            if(statusCode==200){
                Log.info("远程调用成功.line={}",response.getStatusLine());
                HttpEntity entity = response.getEntity();
                return EntityUtils.toString(entity,"UTF-8");
            }
            return  null;
        }catch (IOException e){
            Log.error("远程调用失败.e={}",e.getMessage());
        }
        return  null;
    }
    public static String post(String type,String url,String data){
        String result = "";
        switch (type){
            case "xml":
                result =  postData(url,data,ContentType.APPLICATION_XML.toString());
                break;
            case "json":
                result = postData(url,data,ContentType.APPLICATION_JSON.toString());
                break;
            default:
                break;
        }
        return  result;
    }


    // 使用POST方法发送XML或者json数据
    public static String postData(String url, String xmlData,String contentType){
        CloseableHttpClient client = HttpClients.createDefault();
        HttpPost post = new HttpPost(url);
        post.addHeader("Content-type",contentType);
        try{
            StringEntity entity = new StringEntity(xmlData);
            post.setEntity(entity);
            CloseableHttpResponse response = client.execute(post);
            int statusCode = response.getStatusLine().getStatusCode();
            if(statusCode==200){
                Log.info("远程调用成功.line={}",response.getStatusLine());
                HttpEntity responseEntity = response.getEntity();
                return EntityUtils.toString(responseEntity);
            }
        }catch (IOException e){
            Log.error("远程调用失败.e={}",e.getMessage());
        }
        return  null;
    }

    // 使用POST方法发送FORM表单数据
    public static String postForm(String url, Map map){
        CloseableHttpClient client = HttpClients.createDefault();
        HttpPost post = new HttpPost(url);
        post.addHeader("Content-type",ContentType.APPLICATION_FORM_URLENCODED.toString());
        try{
            List list = new ArrayList<>();
            for(Map.Entry entry : map.entrySet()){
                list.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));
            }

            UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list);
            post.setEntity(urlEncodedFormEntity);
            CloseableHttpResponse response = client.execute(post);
            int statusCode = response.getStatusLine().getStatusCode();
            if(statusCode==200){
                Log.info("远程调用成功.line={}",response.getStatusLine());
                HttpEntity responseEntity = response.getEntity();
                return EntityUtils.toString(responseEntity);
            }
        }catch (IOException e){
            Log.error("远程调用失败.e={}",e.getMessage());
        }
        return  null;
    }





}


你可能感兴趣的:(Java接口对接二(URL方式之xml,json,form))