HttpURLConnection连接代码基本详…

来源:互联网 发布:不出门知天下事 编辑:程序博客网 时间:2024/05/22 07:00
这篇文章是从别的地方看到的,挺不错的,就学习一下吧

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() throwsIOException { 

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

             String getURL = GET_URL + "?username= " 

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

             URL getUrl = newURL(getURL); 

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

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

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

            connection.connect(); 

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

             BufferedReader reader = newBufferedReader(newInputStreamReader(connection.getInputStream())); 

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

             System.out.println(" Contentsof get request "); 

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

             Stringlines; 

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

                   System.out.println(lines); 

             

            reader.close(); 

             //断开连接 

            connection.disconnect(); 

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

             System.out.println(" Contentsof get request ends "); 

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

      



       public static void readContentFromPost() throwsIOException { 

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

             URL postUrl = newURL(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.setInstanceFollowRedirects是成员函数,仅作用于当前函数 

            connection.setInstanceFollowRedirects(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 = newDataOutputStream(connection 

                          .getOutputStream()); 

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

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

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

            out.writeBytes(content); 

            out.flush(); 

             out.close(); // flush andclose 

             BufferedReader reader = newBufferedReader(newInputStreamReader(connection.getInputStream())); 

             Stringline; 

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

             System.out.println(" Contentsof post request "); 

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

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

                   System.out.println(line); 

             

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

             System.out.println(" Contentsof post request ends "); 

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

            reader.close(); 

            //connection.disconnect(); 

      



       public static void main(String[] args){ 

             // TODO Auto-generated methodstub 

             try { 

                   readContentFromGet(); 

                   readContentFromPost(); 

             } catch (IOException e){ 

                    // TODOAuto-generated catch block 

                   e.printStackTrace(); 

             

      

0 0
原创粉丝点击