httpclient4例子

参考:http://hc.apache.org/httpclient-3.x/tutorial.html

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

@Component
public class HttpClientUtil {
    private static CloseableHttpClient httpClient = HttpClients.createDefault();

    private static String ADDRESS;

    public static String getAuthorization() {
        String url = "http://" + ADDRESS + "/login";
        String data = "{"username": "username","password": "password"}";
        HttpURLConnection connection=null;
        try {
            URL server = new URL(url);
            connection = (HttpURLConnection)server.openConnection();
            connection.setRequestMethod("POST");
            connection.addRequestProperty("Content-Type","application/json;charset=utf-8");
            connection.setUseCaches (false);
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setConnectTimeout(5*1000);
            connection.setReadTimeout(10*1000);
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.write(data.toString().getBytes("UTF-8"));
            wr.flush ();
            wr.close ();

            String Authorization =connection.getHeaderField("Authorization");
            return Authorization;
        } catch (Exception e){
            e.printStackTrace();
        } finally{
            if(connection != null ){
                connection.disconnect();
            }
        }
        return null;
    }

    public static String post(String url, String body) {
        String auth = getAuthorization();
        if (auth == null) {
            return null;
        }

        HttpPost httpPost = new HttpPost("http://" + ADDRESS + url);
        httpPost.setHeader(HTTP.CONTENT_TYPE, "application/json;charset=UTF-8");
        httpPost.setHeader("Accept", "application/json;charset=UTF-8");
        httpPost.setHeader("Authorization", auth);

        CloseableHttpResponse response2 = null;
        try {
            StringEntity entity = new StringEntity(body, "utf-8");
            System.out.println("request = " + body);

            httpPost.setEntity(entity);

            response2 = httpClient.execute(httpPost);
            System.out.println(response2.getStatusLine());
            HttpEntity entity2 = response2.getEntity();
            String responseStr = new String(IOUtils.toByteArray(entity2.getContent()));
            System.out.println("response = " + responseStr);

            return responseStr;
        } catch(Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (response2 != null) {
                try {
                    response2.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Value("${interface.address}")
    public void setAddress(String address) {
        ADDRESS = address;
    }
}
原文地址:https://www.cnblogs.com/white-knight/p/8579601.html