HttpURLConnection连接代码基本详…

这篇文章是从别的地方看到的,挺不错的,就学习一下吧

package com.service; 



import java.io.BufferedReader; 

import java.io.DataOutputStream; 

import java.io.IOException; 

import java.io.InputStreamReader; 

import java.net.HttpURLConnection; 

import java.net.URL; 

import java.net.URLEncoder; 



public class HttpInvoker { 



        public static final String GET_URL = " http://localhost:8080/demo/   "; 


        public static final String POST_URL = " http://localhost:8080/demo/   "; 


        public static void readContentFromGet() throws IOException { 

                // 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码 

                String getURL = GET_URL + " ?username= " 

                                + URLEncoder.encode("fat man", " utf-8 "); 

                URL getUrl = new URL(getURL); 

                // 根据拼凑的URL,打开连接,URL.openConnection()函数会根据 URL的类型,返回不同的URLConnection子类的对象,在这里我们的URL是一个http,因此它实际上返回的是HttpURLConnection 

                HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); 

                // 建立与服务器的连接,并未发送数据 

                connection.connect(); 

                // 发送数据到服务器并使用Reader读取返回的数据 

                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

                System.out.println(" ============================= "); 

                System.out.println(" Contents of get request "); 

                System.out.println(" ============================= "); 

                String lines; 

                while ((lines = reader.readLine()) != null) { 

                        System.out.println(lines); 

               

                reader.close(); 

                // 断开连接 

                connection.disconnect(); 

                System.out.println(" ============================= "); 

                System.out.println(" Contents of get request ends "); 

                System.out.println(" ============================= "); 

       



        public static void readContentFromPost() throws IOException { 

                // Post请求的url,与get不同的是不需要带参数 

                URL postUrl = new URL(POST_URL); 

                // 打开连接 

                HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection(); 

                //打开读写属性,默认均为false 

                connection.setDoOutput(true);                  

        connection.setDoInput(true); 

                // 设置请求方式,默认为GET 

                connection.setRequestMethod(" POST "); 

                // Post 请求不能使用缓存 

                connection.setUseCaches(false); 

                // URLConnection.setFollowRedirects是static 函数,作用于所有的URLConnection对象。 

                // connection.setFollowRedirects(true); 

                //URLConnection.setInstanceFollowRedirec ts 是成员函数,仅作用于当前函数 

                connection.setInstanceFollowRedirec ts(true); 

                // 配置连接的Content-type,配置为application/x- www-form-urlencoded的意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode进行编码 

                connection.setRequestProperty(" Content-Type ", 

                                " application/x-www-form-urlencoded "); 

                // 连接,从postUrl.openConnection()至此的配置必须要在 connect之前完成, 

                // 要注意的是connection.getOutputStream()会隐含的进行调用 connect(),所以这里可以省略 

                //connection.connect(); 

                DataOutputStream out = new DataOutputStream(connection 

                                .getOutputStream()); 

                //正文内容其实跟get的URL中'?'后的参数字符串一致 

                String content = " firstname= "+URLEncoder.encode(" 一个大肥人 ", " utf-8 "); 

                // DataOutputStream.writeBytes将字符串中的16位的 unicode字符以8位的字符形式写道流里面 

                out.writeBytes(content); 

                out.flush(); 

                out.close(); // flush and close 

                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

                String line; 

                System.out.println(" ============================= "); 

                System.out.println(" Contents of post request "); 

                System.out.println(" ============================= "); 

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

                        System.out.println(line); 

               

                System.out.println(" ============================= "); 

                System.out.println(" Contents of post request ends "); 

                System.out.println(" ============================= "); 

                reader.close(); 

                //connection.disconnect(); 

       



        public static void main(String[] args) { 

                // TODO Auto-generated method stub 

                try { 

                        readContentFromGet(); 

                        readContentFromPost(); 

                } catch (IOException e) { 

                        // TODO Auto-generated catch block 

                        e.printStackTrace(); 

               

       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值