• java httpclient 发送post请求


    1. pom 配置

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>TestNgDemo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <build>
            <plugins>
                <!--testng打jar包运行的插件引入-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
    
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>
    
                    <configuration>
    
                        <suiteXmlFiles>
    
                            <suiteXmlFile>
                                ./src/main/resources/testng.xml
                            </suiteXmlFile>
                        </suiteXmlFiles>
    
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.1.2</version>
            </dependency>
    
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.10</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20170516</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.4</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.14</version>
            </dependency>
    
            <!--引入测试报告相关包-->
            <dependency>
                <groupId>com.vimalselvam</groupId>
                <artifactId>testng-extentsreport</artifactId>
                <version>1.3.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.aventstack</groupId>
                <artifactId>extentreports</artifactId>
                <version>3.0.6</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20180813</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.60</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.8</version>
            </dependency>
        </dependencies>
    </project>
    

     请求代码

    package com.testng;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.conn.ClientConnectionManager;
    import org.apache.http.conn.scheme.Scheme;
    import org.apache.http.conn.scheme.SchemeRegistry;
    import org.apache.http.conn.ssl.SSLSocketFactory;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import org.json.JSONObject;
    
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    import java.util.ArrayList;
    import java.util.List;
    public class Testng {
        public static void main(String[] args)  {
    
            List list = new ArrayList();
            list.add(new BasicNameValuePair("username","royfans"));
            list.add(new BasicNameValuePair("password","Zlf111"));
            String result = httpPostList(list);
            System.out.println("List post:" + result);
            JSONObject object = new JSONObject();
            object.put("username","royfans");
            object.put("password","Zlf111");
            String result2 = httpPostJson(object);
            System.out.println(result2);
    
    
        }
    
        public static String httpPostList(List list){
            // 调用https 方法,实现https请求
            DefaultHttpClient httpClient = null;
            try {
                httpClient = new SSLClient();
            } catch (Exception e) {
                e.printStackTrace();
            }
            String loginUrl = "https://localhost/web/v1/login";
            String result = null;
            HttpPost post = new HttpPost(loginUrl);
            UrlEncodedFormEntity entity;
            try {
                entity = new UrlEncodedFormEntity(list,"UTF-8");
                post.setEntity(entity);
                CloseableHttpResponse response = httpClient.execute(post);
                HttpEntity entity1 = response.getEntity();
                if (entity1 != null){
    //                System.out.println(EntityUtils.toString(entity1,"UTF-8"));
                    result = EntityUtils.toString(entity1,"UTF-8");
                }
    //            System.out.println(entity1);
                httpClient.close();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }
        public static String httpPostJson(JSONObject jsonObject){
            DefaultHttpClient httpClient = new DefaultHttpClient();
            String loginUrl = "http://172.30.154.111:8088/web/v1/login";
            String result = null;
            HttpPost post = new HttpPost(loginUrl);
            post.setHeader("content-type","application/json");
            StringEntity entity = new StringEntity(jsonObject.toString(),"UTF-8");
            post.setEntity(entity);
            try {
                HttpResponse response = httpClient.execute(post);
                result = EntityUtils.toString(response.getEntity(),"UTF-8");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }
    }
    
    
    //用于进行Https请求的HttpClient
    class SSLClient extends DefaultHttpClient{
        public SSLClient() throws Exception{
            super();
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain,
                                               String authType) throws CertificateException {
                }
                @Override
                public void checkServerTrusted(X509Certificate[] chain,
                                               String authType) throws CertificateException {
                }
                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            };
            ctx.init(null, new TrustManager[]{tm}, null);
            SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            ClientConnectionManager ccm = this.getConnectionManager();
            SchemeRegistry sr = ccm.getSchemeRegistry();
            sr.register(new Scheme("https", 443, ssf));
        }
    }
  • 相关阅读:
    table问题
    生成跟相应qq聊天
    查数组 indexOf()用法
    Ajax请求数据的两种方式
    Ajax面试题
    内部类及静态内部类的实例化
    为什么在开发中大部分的时候都在用session而Application基本上都不去使用?
    Java序列化与反序列化
    Java反射机制
    Java中线程同步的方法
  • 原文地址:https://www.cnblogs.com/royfans/p/14485999.html
Copyright © 2020-2023  润新知