https

Posted albert_think

tags:

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.log4j.Logger;
import com.sekorm.autoscan.common.persistence.ResponseMessage;


public class HttpUtils {

    public static Logger log = Logger.getLogger(HttpUtils.class);  

    @SuppressWarnings("rawtypes")
    public static ResponseMessage sendRequest(String requestUrl,
            Map<String, Object> requestParamsMap) {
        ResponseMessage rspMessage = new ResponseMessage();
        PrintWriter printWriter = null;
        BufferedReader bufferedReader = null;
        StringBuffer responseResult = new StringBuffer();
        StringBuffer params = new StringBuffer();
        HttpURLConnection httpURLConnection = null;
        try {
            // 组织请求参数
            Iterator it = requestParamsMap.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry element = (Map.Entry) it.next();
                params.append(element.getKey());
                params.append("=");
                params.append(element.getValue());
                params.append("&");
            }
            if (params.length() > 0) {
                params.deleteCharAt(params.length() - 1);
            }
            URL realUrl = new URL(requestUrl);
            // 打开和URL之间的连接
            httpURLConnection = (HttpURLConnection) realUrl.openConnection();
            httpURLConnection.setRequestMethod("POST");
            // 设置通用的请求属性
            httpURLConnection.setRequestProperty("accept", "*/*");
            httpURLConnection.setRequestProperty("connection", "Keep-Alive");
            httpURLConnection.setRequestProperty("Content-Length",
                    String.valueOf(params.length()));
            // 发送POST请求必须设置如下两行
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            printWriter = new PrintWriter(httpURLConnection.getOutputStream());
            // 发送请求参数
            printWriter.write(params.toString());
            // flush输出流的缓冲
            printWriter.flush();
            // 根据ResponseCode判断连接是否成功
            int responseCode = httpURLConnection.getResponseCode();
            rspMessage.setStatusCode(responseCode);
            // 定义BufferedReader输入流来读取URL的ResponseData
            bufferedReader = new BufferedReader(new InputStreamReader(
                    httpURLConnection.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                responseResult.append(line);
            }
            rspMessage.setContent(responseResult.toString());
        } catch (Exception e) {
            log.error("send post request error!" + e);
        } finally {
            httpURLConnection.disconnect();
            try {
                if (printWriter != null) {
                    printWriter.close();
                }
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return rspMessage;
    }

    @SuppressWarnings("rawtypes")
    public static ResponseMessage sendHttpsRequest(String requestUrl,
            Map<String, Object> requestParamsMap) {
        ResponseMessage rspMessage = new ResponseMessage();
        HttpsUtils util = HttpsUtils.getInstance();
        HttpResponse resp;
        try {
            // 组织请求参数
            Map<String, String> queryParams = new HashMap<String, String>();
            Iterator it = requestParamsMap.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry element = (Map.Entry) it.next();
                queryParams.put(String.valueOf(element.getKey()),
                        String.valueOf(element.getValue()));
            }
            resp = util.doPost(requestUrl, null, queryParams);

            rspMessage.setStatusCode(resp.getStatusLine().getStatusCode());
            rspMessage.setContent(HttpsUtils.readStream(resp.getEntity()
                    .getContent(), HttpsUtils.defaultEncoding));
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return rspMessage;
    }

}

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

HTTPS 协议

HTTPS原理

https的实现

HTTP和HTTPS

浅析https

网络相关