美文网首页
java发送http请求(get方式和post方式)

java发送http请求(get方式和post方式)

作者: wentq | 来源:发表于2019-06-24 14:43 被阅读0次

    一、简述:

        两要素:①发送http请求的地址(URL);

                      ②发送http请求的参数(String类型、json字符串类型、xml类型、Map类型);

    二、代码如下:

    public class MainTest {

    /**

        * 向指定URL发送GET方法的请求

        *

        * @param url

        *            发送请求的URL

        * @param param

        *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

        * @return URL 所代表远程资源的响应结果

        */

        public static String sendGet(String url, String param) {

            String result = "";

            BufferedReader in = null;

            try {

                String urlNameString = url + "?" + param;

                URL realUrl = new URL(urlNameString);

                // 打开和URL之间的连接

                URLConnection connection = realUrl.openConnection();

                // 设置通用的请求属性

                connection.setRequestProperty("accept", "*/*");

                connection.setRequestProperty("connection", "Keep-Alive");

                connection.setRequestProperty("user-agent",

                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

                // 建立实际的连接

                connection.connect();

                // 获取所有响应头字段

                Map<String, List<String>> map = connection.getHeaderFields();

                // 遍历所有的响应头字段

                for (String key : map.keySet()) {

                    System.out.println(key + "--->" + map.get(key));

                }

                // 定义 BufferedReader输入流来读取URL的响应

                in = new BufferedReader(new InputStreamReader(

                        connection.getInputStream()));

                String line;

                while ((line = in.readLine()) != null) {

                    result += line;

                }

            } catch (Exception e) {

                System.out.println("发送GET请求出现异常!" + e);

                e.printStackTrace();

            }

            // 使用finally块来关闭输入流

            finally {

                try {

                    if (in != null) {

                        in.close();

                    }

                } catch (Exception e2) {

                    e2.printStackTrace();

                }

            }

            return result;

        }


    /**

        * 向指定 URL 发送POST方法的请求

        *

        * @param url

        *            发送请求的 URL

        * @param param  (String类型)

        *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

        * @return 所代表远程资源的响应结果

        */

        public static String sendPost(String url, String param) {

            PrintWriter out = null;

            BufferedReader in = null;

            String result = "";

            try {

                URL realUrl = new URL(url);

                // 打开和URL之间的连接

                URLConnection conn = realUrl.openConnection();

                // 设置通用的请求属性

                conn.setRequestProperty("accept", "*/*");

                conn.setRequestProperty("connection", "Keep-Alive");

                conn.setRequestProperty("user-agent",

                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

                // 发送POST请求必须设置如下两行

                conn.setDoOutput(true);

                conn.setDoInput(true);

                // 获取URLConnection对象对应的输出流

                out = new PrintWriter(conn.getOutputStream());

                // 发送请求参数

                out.print(param);

                // flush输出流的缓冲

                out.flush();

                // 定义BufferedReader输入流来读取URL的响应

                in = new BufferedReader(

                        new InputStreamReader(conn.getInputStream(),"UTF-8"));

                String line;

                while ((line = in.readLine()) != null) {

                    result += line;

                }

            } catch (Exception e) {

                System.out.println("发送 POST 请求出现异常!"+e);

                e.printStackTrace();

            }

            //使用finally块来关闭输出流、输入流

            finally{

                try{

                    if(out!=null){

                        out.close();

                    }

                    if(in!=null){

                        in.close();

                    }

                }

                catch(IOException ex){

                    ex.printStackTrace();

                }

            }

            return result;

        }


    /**

        * 发送post请求

        * @param url  路径

        * @param jsonObject  参数(json类型)

        * @param encoding 编码格式

        * @return

        * @throws ParseException

        * @throws IOException

        */

        public static String send(String url, String jsonObject,String encoding) throws ParseException, IOException{

            String body = "";

            //创建httpclient对象

            CloseableHttpClient client = HttpClients.createDefault();

            //创建post方式请求对象

            HttpPost httpPost = new HttpPost(url);

            //装填参数

            StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");

            s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,

                    "application/json"));

            //设置参数到请求对象中

            httpPost.setEntity(s);

            System.out.println("请求地址:"+url);

    //        System.out.println("请求参数:"+nvps.toString());

            //设置header信息

            //指定报文头【Content-type】、【User-Agent】

    //        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");

            httpPost.setHeader("Content-type", "application/json");

            httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

            //执行请求操作,并拿到结果(同步阻塞)

            CloseableHttpResponse response = client.execute(httpPost);

            //获取结果实体

            HttpEntity entity = response.getEntity();

            if (entity != null) {

                //按指定编码转换结果实体为String类型

                body = EntityUtils.toString(entity, encoding);

            }

            EntityUtils.consume(entity);

            //释放链接

            response.close();

            return body;

        }


     /**

         * 发送xml格式的HTTP POST请求

         * @param url 请求地址

         * @param xml 请求的xml数据

         * @return 服务端返回的数据字符串

         */

        public static String doPostXml(String url, String xml) {

            // 创建Httpclient对象

            CloseableHttpClient httpClient = HttpClients.createDefault();

            CloseableHttpResponse response = null;

            String resultString = "";

            try {

                // 创建Http Post请求

                HttpPost httpPost = new HttpPost(url);

                // 创建请求内容

                StringEntity entity = new StringEntity(xml, ContentType.APPLICATION_XML);

                httpPost.setEntity(entity);

                // 执行http请求

                response = httpClient.execute(httpPost);

                resultString = EntityUtils.toString(response.getEntity(), "utf-8");

            } catch (Exception e) {

                e.printStackTrace();

            } finally {

                try {

                    response.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            return resultString;

        }


    /**

         * 发送xml格式的HTTP POST请求

         * @param url 请求地址

         * @param map 请求的map数据

         * @return 服务端返回的数据字符串

         */

        public static String doPost(String url, Map<String, Object> param) {

            // 创建Httpclient对象

            CloseableHttpClient httpClient = HttpClients.createDefault();

            CloseableHttpResponse response = null;

            String resultString = "";

            try {

                // 创建Http Post请求

                HttpPost httpPost = new HttpPost(url);

                // 创建参数列表

                if (param != null) {

                    List<NameValuePair> paramList = new ArrayList<NameValuePair>();

                    for (String key : param.keySet()) {

                        Object value =  param.get(key);

                        if(value!=null){

                            paramList.add(new BasicNameValuePair(key,value+""));

                        }

                    }

                    // 模拟表单

                    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList,"UTF-8");

                    httpPost.setEntity(entity);

                }

                // 执行http请求

                response = httpClient.execute(httpPost);

                resultString = EntityUtils.toString(response.getEntity(), "utf-8");

            } catch (Exception e) {

                e.printStackTrace();

            } finally {

                try {

                    response.close();

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

            System.out.println(resultString);

            return resultString;

        }


    三、jar包补充:

    所需jar包下载

    提取码:uedc


    小白学习写文章,欢迎大神来指教--!

    相关文章

      网友评论

          本文标题:java发送http请求(get方式和post方式)

          本文链接:https://www.haomeiwen.com/subject/zaonqctx.html