zoukankan      html  css  js  c++  java
  • Java笔记7:最简单的网络请求Demo

    一、服务器端

     

     

    1 新建一个工程,建立一个名为MyRequest的工程。

     

    2 FileàProject StructureàModulesà点击最右侧的“+”àLibraryàJava

    找到Tomcat中的lib目录下的servlet-api.jar,添加进来

     

     

    3 建立LoginServlet类,内容如下

     

     

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. import java.io.IOException;  
    2. import javax.servlet.ServletException;  
    3. import javax.servlet.http.HttpServlet;  
    4. import javax.servlet.http.HttpServletRequest;  
    5. import javax.servlet.http.HttpServletResponse;  
    6.   
    7. public class LoginServlet extends HttpServlet {  
    8.     private static final long serialVersionUID = 1L;  
    9.          
    10.     public LoginServlet() {  
    11.         super();  
    12.     }  
    13.   
    14.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    15.         this.doPost(request, response);  
    16.     }  
    17.   
    18.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    19.         String username = request.getParameter("username");  
    20.         String blog = request.getParameter("blog");  
    21.           
    22.         System.out.println(username);  
    23.         System.out.println(blog);  
    24.           
    25.         response.setContentType("text/plain; charset=UTF-8");  
    26.         response.setCharacterEncoding("UTF-8");  
    27.         response.getWriter().write("It is ok!");  
    28.     }  
    29.   
    30. }  

     

    4 编译LoginServlet.java,得到LoginServlet.class

     

     

     

    5 在Tomcat中的webapps中添加MyHttpServerWEB-INFclasses,并把上一步生成的LoginServlet.class拷进来

     

    6 在WEB-INF目录下建立web.xml文件,内容如下:

     

     

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
    3.   <display-name>OneHttpServer</display-name>  
    4.   <welcome-file-list>  
    5.     <welcome-file>LoginServlet</welcome-file>  
    6.   </welcome-file-list>  
    7.     
    8.   <servlet>  
    9.     <description></description>  
    10.     <display-name>LoginServlet</display-name>  
    11.     <servlet-name>LoginServlet</servlet-name>  
    12.     <servlet-class>LoginServlet</servlet-class>  
    13.   </servlet>  
    14.   <servlet-mapping>  
    15.     <servlet-name>LoginServlet</servlet-name>  
    16.     <url-pattern>/LoginServlet</url-pattern>  
    17.   </servlet-mapping>  
    18.     
    19. </web-app>  

     

     

    7 执行Tomcat下的bin目录下的startup.bat来启动Tomcat

     

     

    8 在浏览器中输入http://localhost:8080/MyHttpServer,若见到页面显示“It is ok!”则表示服务器端配置成功。

     

    二、客户端

    1 Get请求

    MyRequest工程新建HttpGetRequest类,内容如下:

     

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. import java.io.BufferedReader;  
    2. import java.io.InputStream;  
    3. import java.io.InputStreamReader;  
    4. import java.net.HttpURLConnection;  
    5. import java.net.URL;  
    6. import java.net.URLConnection;  
    7.   
    8. public class HttpGetRequest {  
    9.   
    10.     /** 
    11.      * Main 
    12.      * @param args 
    13.      * @throws Exception 
    14.      */  
    15.     public static void main(String[] args) throws Exception {  
    16.         System.out.println(doGet());  
    17.     }  
    18.   
    19.     /** 
    20.      * Get Request 
    21.      * @return 
    22.      * @throws Exception 
    23.      */  
    24.     public static String doGet() throws Exception {  
    25.         URL localURL = new URL("http://localhost:8080/MyHttpServer/");  
    26.         URLConnection connection = localURL.openConnection();  
    27.         HttpURLConnection httpURLConnection = (HttpURLConnection)connection;  
    28.   
    29.         httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");  
    30.         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
    31.   
    32.         InputStream inputStream = null;  
    33.         InputStreamReader inputStreamReader = null;  
    34.         BufferedReader reader = null;  
    35.         StringBuffer resultBuffer = new StringBuffer();  
    36.         String tempLine = null;  
    37.   
    38.         if (httpURLConnection.getResponseCode() >= 300) {  
    39.             throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());  
    40.         }  
    41.   
    42.         try {  
    43.             inputStream = httpURLConnection.getInputStream();  
    44.             inputStreamReader = new InputStreamReader(inputStream);  
    45.             reader = new BufferedReader(inputStreamReader);  
    46.   
    47.             while ((tempLine = reader.readLine()) != null) {  
    48.                 resultBuffer.append(tempLine);  
    49.             }  
    50.   
    51.         } finally {  
    52.   
    53.             if (reader != null) {  
    54.                 reader.close();  
    55.             }  
    56.   
    57.             if (inputStreamReader != null) {  
    58.                 inputStreamReader.close();  
    59.             }  
    60.   
    61.             if (inputStream != null) {  
    62.                 inputStream.close();  
    63.             }  
    64.   
    65.         }  
    66.   
    67.         return resultBuffer.toString();  
    68.     }  
    69.   
    70. }  

    运行结果:

    It is ok!

     

    2 Post请求

    新建HttpPostRequest.java类,内容如下:

     

     

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. import java.io.BufferedReader;  
    2. import java.io.InputStream;  
    3. import java.io.InputStreamReader;  
    4. import java.io.OutputStream;  
    5. import java.io.OutputStreamWriter;  
    6. import java.net.HttpURLConnection;  
    7. import java.net.URL;  
    8. import java.net.URLConnection;  
    9.   
    10. public class HttpPostRequest {  
    11.   
    12.     /** 
    13.      * Main 
    14.      * @param args 
    15.      * @throws Exception 
    16.      */  
    17.     public static void main(String[] args) throws Exception {  
    18.         System.out.println(doPost());  
    19.     }  
    20.   
    21.     /** 
    22.      * Post Request 
    23.      * @return 
    24.      * @throws Exception 
    25.      */  
    26.     public static String doPost() throws Exception {  
    27.         String parameterData = "username=nickhuang&blog=http://www.cnblogs.com/nick-huang/";  
    28.   
    29.         URL localURL = new URL("http://localhost:8080/MyHttpServer/");  
    30.         URLConnection connection = localURL.openConnection();  
    31.         HttpURLConnection httpURLConnection = (HttpURLConnection)connection;  
    32.   
    33.         httpURLConnection.setDoOutput(true);  
    34.         httpURLConnection.setRequestMethod("POST");  
    35.         httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");  
    36.         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
    37.         httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterData.length()));  
    38.   
    39.         OutputStream outputStream = null;  
    40.         OutputStreamWriter outputStreamWriter = null;  
    41.         InputStream inputStream = null;  
    42.         InputStreamReader inputStreamReader = null;  
    43.         BufferedReader reader = null;  
    44.         StringBuffer resultBuffer = new StringBuffer();  
    45.         String tempLine = null;  
    46.   
    47.         try {  
    48.             outputStream = httpURLConnection.getOutputStream();  
    49.             outputStreamWriter = new OutputStreamWriter(outputStream);  
    50.   
    51.             outputStreamWriter.write(parameterData.toString());  
    52.             outputStreamWriter.flush();  
    53.   
    54.             if (httpURLConnection.getResponseCode() >= 300) {  
    55.                 throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());  
    56.             }  
    57.   
    58.             inputStream = httpURLConnection.getInputStream();  
    59.             inputStreamReader = new InputStreamReader(inputStream);  
    60.             reader = new BufferedReader(inputStreamReader);  
    61.   
    62.             while ((tempLine = reader.readLine()) != null) {  
    63.                 resultBuffer.append(tempLine);  
    64.             }  
    65.   
    66.         } finally {  
    67.   
    68.             if (outputStreamWriter != null) {  
    69.                 outputStreamWriter.close();  
    70.             }  
    71.   
    72.             if (outputStream != null) {  
    73.                 outputStream.close();  
    74.             }  
    75.   
    76.             if (reader != null) {  
    77.                 reader.close();  
    78.             }  
    79.   
    80.             if (inputStreamReader != null) {  
    81.                 inputStreamReader.close();  
    82.             }  
    83.   
    84.             if (inputStream != null) {  
    85.                 inputStream.close();  
    86.             }  
    87.   
    88.         }  
    89.   
    90.         return resultBuffer.toString();  
    91.     }  
    92. }  

     

    运行结果:

    It is ok!

     

    3 对Get和Post进行封装

    封装类:

     

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. import java.io.BufferedReader;  
    2. import java.io.IOException;  
    3. import java.io.InputStream;  
    4. import java.io.InputStreamReader;  
    5. import java.io.OutputStream;  
    6. import java.io.OutputStreamWriter;  
    7. import java.net.HttpURLConnection;  
    8. import java.net.InetSocketAddress;  
    9. import java.net.Proxy;  
    10. import java.net.URL;  
    11. import java.net.URLConnection;  
    12. import java.util.Iterator;  
    13. import java.util.Map;  
    14.   
    15.   
    16. public class HttpRequestor {  
    17.   
    18.     private String charset = "utf-8";  
    19.     private Integer connectTimeout = null;  
    20.     private Integer socketTimeout = null;  
    21.     private String proxyHost = null;  
    22.     private Integer proxyPort = null;  
    23.   
    24.     /** 
    25.      * Do GET request 
    26.      * @param url 
    27.      * @return 
    28.      * @throws Exception 
    29.      * @throws IOException 
    30.      */  
    31.     public String doGet(String url) throws Exception {  
    32.   
    33.         URL localURL = new URL(url);  
    34.   
    35.         URLConnection connection = openConnection(localURL);  
    36.         HttpURLConnection httpURLConnection = (HttpURLConnection)connection;  
    37.   
    38.         httpURLConnection.setRequestProperty("Accept-Charset", charset);  
    39.         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
    40.   
    41.         InputStream inputStream = null;  
    42.         InputStreamReader inputStreamReader = null;  
    43.         BufferedReader reader = null;  
    44.         StringBuffer resultBuffer = new StringBuffer();  
    45.         String tempLine = null;  
    46.   
    47.         if (httpURLConnection.getResponseCode() >= 300) {  
    48.             throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());  
    49.         }  
    50.   
    51.         try {  
    52.             inputStream = httpURLConnection.getInputStream();  
    53.             inputStreamReader = new InputStreamReader(inputStream);  
    54.             reader = new BufferedReader(inputStreamReader);  
    55.   
    56.             while ((tempLine = reader.readLine()) != null) {  
    57.                 resultBuffer.append(tempLine);  
    58.             }  
    59.   
    60.         } finally {  
    61.   
    62.             if (reader != null) {  
    63.                 reader.close();  
    64.             }  
    65.   
    66.             if (inputStreamReader != null) {  
    67.                 inputStreamReader.close();  
    68.             }  
    69.   
    70.             if (inputStream != null) {  
    71.                 inputStream.close();  
    72.             }  
    73.   
    74.         }  
    75.   
    76.         return resultBuffer.toString();  
    77.     }  
    78.   
    79.     /** 
    80.      * Do POST request 
    81.      * @param url 
    82.      * @param parameterMap 
    83.      * @return 
    84.      * @throws Exception 
    85.      */  
    86.     public String doPost(String url, Map parameterMap) throws Exception {  
    87.           
    88.         /* Translate parameter map to parameter date string */  
    89.         StringBuffer parameterBuffer = new StringBuffer();  
    90.         if (parameterMap != null) {  
    91.             Iterator iterator = parameterMap.keySet().iterator();  
    92.             String key = null;  
    93.             String value = null;  
    94.             while (iterator.hasNext()) {  
    95.                 key = (String)iterator.next();  
    96.                 if (parameterMap.get(key) != null) {  
    97.                     value = (String)parameterMap.get(key);  
    98.                 } else {  
    99.                     value = "";  
    100.                 }  
    101.   
    102.                 parameterBuffer.append(key).append("=").append(value);  
    103.                 if (iterator.hasNext()) {  
    104.                     parameterBuffer.append("&");  
    105.                 }  
    106.             }  
    107.         }  
    108.   
    109.         System.out.println("POST parameter : " + parameterBuffer.toString());  
    110.   
    111.         URL localURL = new URL(url);  
    112.   
    113.         URLConnection connection = openConnection(localURL);  
    114.         HttpURLConnection httpURLConnection = (HttpURLConnection)connection;  
    115.   
    116.         httpURLConnection.setDoOutput(true);  
    117.         httpURLConnection.setRequestMethod("POST");  
    118.         httpURLConnection.setRequestProperty("Accept-Charset", charset);  
    119.         httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
    120.         httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));  
    121.   
    122.         OutputStream outputStream = null;  
    123.         OutputStreamWriter outputStreamWriter = null;  
    124.         InputStream inputStream = null;  
    125.         InputStreamReader inputStreamReader = null;  
    126.         BufferedReader reader = null;  
    127.         StringBuffer resultBuffer = new StringBuffer();  
    128.         String tempLine = null;  
    129.   
    130.         try {  
    131.             outputStream = httpURLConnection.getOutputStream();  
    132.             outputStreamWriter = new OutputStreamWriter(outputStream);  
    133.   
    134.             outputStreamWriter.write(parameterBuffer.toString());  
    135.             outputStreamWriter.flush();  
    136.   
    137.             if (httpURLConnection.getResponseCode() >= 300) {  
    138.                 throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());  
    139.             }  
    140.   
    141.             inputStream = httpURLConnection.getInputStream();  
    142.             inputStreamReader = new InputStreamReader(inputStream);  
    143.             reader = new BufferedReader(inputStreamReader);  
    144.   
    145.             while ((tempLine = reader.readLine()) != null) {  
    146.                 resultBuffer.append(tempLine);  
    147.             }  
    148.   
    149.         } finally {  
    150.   
    151.             if (outputStreamWriter != null) {  
    152.                 outputStreamWriter.close();  
    153.             }  
    154.   
    155.             if (outputStream != null) {  
    156.                 outputStream.close();  
    157.             }  
    158.   
    159.             if (reader != null) {  
    160.                 reader.close();  
    161.             }  
    162.   
    163.             if (inputStreamReader != null) {  
    164.                 inputStreamReader.close();  
    165.             }  
    166.   
    167.             if (inputStream != null) {  
    168.                 inputStream.close();  
    169.             }  
    170.   
    171.         }  
    172.   
    173.         return resultBuffer.toString();  
    174.     }  
    175.   
    176.     private URLConnection openConnection(URL localURL) throws IOException {  
    177.         URLConnection connection;  
    178.         if (proxyHost != null && proxyPort != null) {  
    179.             Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));  
    180.             connection = localURL.openConnection(proxy);  
    181.         } else {  
    182.             connection = localURL.openConnection();  
    183.         }  
    184.         return connection;  
    185.     }  
    186.   
    187.     /** 
    188.      * Render request according setting 
    189.      * @param request 
    190.      */  
    191.     private void renderRequest(URLConnection connection) {  
    192.   
    193.         if (connectTimeout != null) {  
    194.             connection.setConnectTimeout(connectTimeout);  
    195.         }  
    196.   
    197.         if (socketTimeout != null) {  
    198.             connection.setReadTimeout(socketTimeout);  
    199.         }  
    200.   
    201.     }  
    202.   
    203.     /* 
    204.      * Getter & Setter 
    205.      */  
    206.     public Integer getConnectTimeout() {  
    207.         return connectTimeout;  
    208.     }  
    209.   
    210.     public void setConnectTimeout(Integer connectTimeout) {  
    211.         this.connectTimeout = connectTimeout;  
    212.     }  
    213.   
    214.     public Integer getSocketTimeout() {  
    215.         return socketTimeout;  
    216.     }  
    217.   
    218.     public void setSocketTimeout(Integer socketTimeout) {  
    219.         this.socketTimeout = socketTimeout;  
    220.     }  
    221.   
    222.     public String getProxyHost() {  
    223.         return proxyHost;  
    224.     }  
    225.   
    226.     public void setProxyHost(String proxyHost) {  
    227.         this.proxyHost = proxyHost;  
    228.     }  
    229.   
    230.     public Integer getProxyPort() {  
    231.         return proxyPort;  
    232.     }  
    233.   
    234.     public void setProxyPort(Integer proxyPort) {  
    235.         this.proxyPort = proxyPort;  
    236.     }  
    237.   
    238.     public String getCharset() {  
    239.         return charset;  
    240.     }  
    241.   
    242.     public void setCharset(String charset) {  
    243.         this.charset = charset;  
    244.     }  
    245.   
    246. }  

     

    客户端测试代码:

     

     

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. import java.util.HashMap;  
    2. import java.util.Map;  
    3.   
    4. public class Call {  
    5.   
    6.     public static void main(String[] args) throws Exception {  
    7.   
    8.         /* Post Request */  
    9.         Map dataMap = new HashMap();  
    10.         dataMap.put("username", "Zheng");  
    11.         dataMap.put("blog", "IT");  
    12.         System.out.println(new HttpRequestor().doPost("http://localhost:8080/MyHttpServer/", dataMap));  
    13.   
    14.         /* Get Request */  
    15.         System.out.println(new HttpRequestor().doGet("http://localhost:8080/MyHttpServer/"));  
    16.     }  
    17. }  

     

    运行结果:

    POST parameter : blog=IT&username=Zheng

    It is ok!

    It is ok!

  • 相关阅读:
    Python3.x与Python2.x的区别
    Python3.x:打包为exe执行文件(window系统)
    Python3.x:常用基础语法
    关于yaha中文分词(将中文分词后,结合TfidfVectorizer变成向量)
    关于:cross_validation.scores
    list array解析(总算清楚一点了)
    pipeline(管道的连续应用)
    关于RandomizedSearchCV 和GridSearchCV(区别:参数个数的选择方式)
    VotingClassifier
    Python的zip函数
  • 原文地址:https://www.cnblogs.com/grimm/p/6732411.html
Copyright © 2011-2022 走看看