JAVA中使用POST和GET发送请求

来源:互联网 发布:铠甲原画 知乎 编辑:程序博客网 时间:2024/05/16 08:05

GET

1、创建HTTP uri构造器

protected URIBuilder ub;

2、添加发送参数

List<NameValuePair> list = new ArrayList<NameValuePair>(20);for (int i=0;i<strArr.length;i++){    String[]  str2=strArr[i].split("=");        if(str2.length>1){            list.add(new BasicNameValuePair(str2[0],str2[1]));    }}ub.addParameters(list);

3、创建一个CloseableHttpClient发送器发送请求

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();cm.setDefaultMaxPerRoute(1000);Builder builder = RequestConfig.custom();RequestConfig config = builder.setSocketTimeout(HttpConstant.SOCKET_TIMEOUT).setConnectTimeout(HttpConstant.CONNECT_TIMEOUT).build();CloseableHttpClient client = HttpClients.custom().setMaxConnPerRoute(300).disableConnectionState().setDefaultRequestConfig(config).setConnectionManager(cm).build();    HttpGet get = new HttpGet(ub.build());client.execute(get);

POST

1、创建HTTP uri构造器

protected URIBuilder ub;

2、创建Entity对象

HttpEntity entity = new StringEntity(jsonstr, Consts.UTF_8);RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(30000)                    .setConnectTimeout(30000).setSocketTimeout(30000).build();HttpPost post = new HttpPost(ub.build());post.setHeader("Content-Type","application/json");post.setProtocolVersion(HttpVersion.HTTP_1_1);post.setConfig(config);post.setEntity(entity);

3、创建一个CloseableHttpClient发送器发送请求

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();cm.setDefaultMaxPerRoute(1000);Builder builder = RequestConfig.custom();RequestConfig config = builder.setSocketTimeout(HttpConstant.SOCKET_TIMEOUT).setConnectTimeout(HttpConstant.CONNECT_TIMEOUT).build();CloseableHttpClient client = HttpClients.custom().setMaxConnPerRoute(300).disableConnectionState().setDefaultRequestConfig(config).setConnectionManager(cm).build();    /** *如果是https,则发送器需要添加证书 */ /*SSLContext context = buildSSLContext(irm);//构建证书对象CloseableHttpClient client = HttpClients.custom().setMaxConnPerRoute(300).disableConnectionState().setDefaultRequestConfig(config).setConnectionManager(cm).build().setSslcontext(context)*/client.execute(post);
/** * *构建证书对象方法 * */private SSLContext buildSSLContext(InternalReceivedMessage irm){            String certBlong = "zhangsan";       //证书所有者    String keyStorePath = "";            //商户私有密钥路径    String keypassword = "";             //商户私有密钥密码    String trustKeyStorePath = "";       //信任对象的证书路径    String trustCaStorePath = "";        //信任对象ca证书路径,可以生产信任对象证书    String trustKeypassword = "";        //信任对象证书密码    try {        File jksCAFile = new File(trustKeyStorePath);        if (!jksCAFile.isFile()) {            File caFile = new File(trustCaStorePath);            X509Certificate cert = (X509Certificate) SecurityUtils.getCertificate(caFile,"X.509");            FileOutputStream out = new FileOutputStream(jksCAFile);            KeyStore ks = KeyStore.getInstance("JKS");            ks.load(null, null);            ks.setCertificateEntry(certBlong, cert);            // store keystore            ks.store(out, trustKeypassword.toCharArray());            out.close();        }        FileInputStream trustStream = new FileInputStream(jksCAFile);        FileInputStream keyStream = new FileInputStream(keyStorePath);        // 初始化信任库          TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");        KeyStore trustKeyStore = KeyStore.getInstance("JKS");        trustKeyStore.load(trustStream, trustKeypassword.toCharArray());        tmf.init(trustKeyStore);        // 初始化密钥库          KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");        KeyStore ks = KeyStore.getInstance("PKCS12");        ks.load(keyStream, keypassword.toCharArray());        kmf.init(ks, keypassword.toCharArray());        SecureRandom rand = new SecureRandom();        SSLContext ctx = SSLContext.getInstance("TLS");        ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), rand);        return ctx;    } catch (Exception e) {        logger.error("SSL上下文创建失败,请联系管理员.",e);    }    return null;}

http://blog.csdn.net/wangpeng047/article/details/19624529

0 0
原创粉丝点击