`

HTTP请求范例

阅读更多
package com.grefr.basemethod;
/*JAVA发送HTTP请求,返回HTTP响应内容,实例及应用 博客分类: JAVA实现
Java.netBeanJDKApache .
JDK 中提供了一些对无状态协议请求(HTTP )的支持,下面我就将我所写的一个小例子(组件)进行描述:

首先让我们先构建一个请求类(HttpRequester )。

该类封装了 JAVA 实现简单请求的代码,如下: */


//Java代码
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.nio.charset.Charset; 
import java.util.Map; 
import java.util.Vector; 
  
/**
* HTTP请求对象

* @author YYmmiinngg
*/
public class HttpRequester { 
    private String defaultContentEncoding; 
  
    public HttpRequester() { 
        this.defaultContentEncoding = Charset. defaultCharset().name(); 
    } 
  
    /**
     * 发送GET请求
     * 
     * @param urlString
     *            URL地址
     * @return 响应对象
     * @throws IOException
     */ 
    public HttpRespons sendGet(String urlString) throws IOException { 
        return this.send(urlString, "GET", null, null); 
    } 
  
    /**
     * 发送GET请求
     * 
     * @param urlString
     *            URL地址
     * @param params
     *            参数集合
     * @return 响应对象
     * @throws IOException
     */ 
    public HttpRespons sendGet(String urlString, Map<String, String> params) 
            throws IOException { 
        return this.send(urlString, "GET", params, null); 
    } 
  
    /**
     * 发送GET请求
     * 
     * @param urlString
     *            URL地址
     * @param params
     *            参数集合
     * @param propertys
     *            请求属性
     * @return 响应对象
     * @throws IOException
     */ 
    public HttpRespons sendGet(String urlString, Map<String, String> params, 
            Map<String, String> propertys) throws IOException { 
        return this.send(urlString, "GET", params, propertys); 
    } 
  
    /**
     * 发送POST请求
     * 
     * @param urlString
     *            URL地址
     * @return 响应对象
     * @throws IOException
     */ 
    public HttpRespons sendPost(String urlString) throws IOException { 
        return this.send(urlString, "POST", null, null); 
    } 
  
    /**
     * 发送POST请求
     * 
     * @param urlString
     *            URL地址
     * @param params
     *            参数集合
     * @return 响应对象
     * @throws IOException
     */ 
    public HttpRespons sendPost(String urlString, Map<String, String> params) 
            throws IOException { 
        return this.send(urlString, "POST", params, null); 
    } 
  
    /**
     * 发送POST请求
     * 
     * @param urlString
     *            URL地址
     * @param params
     *            参数集合
     * @param propertys
     *            请求属性
     * @return 响应对象
     * @throws IOException
     */ 
    public HttpRespons sendPost(String urlString, Map<String, String> params, 
            Map<String, String> propertys) throws IOException { 
        return this.send(urlString, "POST", params, propertys); 
    } 
  
    /**
     * 发送HTTP请求
     * 
     * @param urlString
     * @return 响映对象
     * @throws IOException
     */ 
    private HttpRespons send(String urlString, String method, 
            Map<String, String> parameters, Map<String, String> propertys) 
            throws IOException { 
        HttpURLConnection urlConnection = null; 
  
        if (method.equalsIgnoreCase("GET") && parameters != null) { 
            StringBuffer param = new StringBuffer(); 
            int i = 0; 
            for (String key : parameters.keySet()) { 
                if (i == 0) 
                    param.append( "?"); 
                else
                    param.append( "&"); 
                param.append(key).append("=" ).append(parameters.get(key)); 
                i++; 
            } 
            urlString += param; 
        } 
        URL url = new URL(urlString); 
        urlConnection = (HttpURLConnection) url.openConnection(); 
  
        urlConnection.setRequestMethod(method); 
        urlConnection.setDoOutput( true); 
        urlConnection.setDoInput( true); 
        urlConnection.setUseCaches( false); 
  
        if (propertys != null) 
            for (String key : propertys.keySet()) { 
                urlConnection.addRequestProperty(key, propertys.get(key)); 
            } 
  
        if (method.equalsIgnoreCase("POST") && parameters != null) { 
            StringBuffer param = new StringBuffer(); 
            for (String key : parameters.keySet()) { 
                param.append( "&"); 
                param.append(key).append("=" ).append(parameters.get(key)); 
            } 
            urlConnection.getOutputStream().write(param.toString().getBytes()); 
            urlConnection.getOutputStream().flush(); 
            urlConnection.getOutputStream().close(); 
        } 
  
        return this.makeContent(urlString, urlConnection); 
    } 
  
    /**
     * 得到响应对象
     * 
     * @param urlConnection
     * @return 响应对象
     * @throws IOException
     */ 
    private HttpRespons makeContent(String urlString, 
            HttpURLConnection urlConnection) throws IOException { 
        HttpRespons httpResponser = new HttpRespons(); 
        try { 
            InputStream in = urlConnection.getInputStream(); 
            BufferedReader bufferedReader = new BufferedReader( 
                    new InputStreamReader(in)); 
            httpResponser. contentCollection = new Vector<String>(); 
            StringBuffer temp = new StringBuffer(); 
            String line = bufferedReader.readLine(); 
            while (line != null) { 
                httpResponser. contentCollection.add(line); 
                temp.append(line).append( "\r\n"); 
                line = bufferedReader.readLine(); 
            } 
            bufferedReader.close(); 
  
            String ecod = urlConnection.getContentEncoding(); 
            if (ecod == null) 
                ecod = this.defaultContentEncoding; 
  
            httpResponser. urlString = urlString; 
  
            httpResponser. defaultPort = urlConnection.getURL().getDefaultPort(); 
            httpResponser. file = urlConnection.getURL().getFile(); 
            httpResponser. host = urlConnection.getURL().getHost(); 
            httpResponser. path = urlConnection.getURL().getPath(); 
            httpResponser. port = urlConnection.getURL().getPort(); 
            httpResponser. protocol = urlConnection.getURL().getProtocol(); 
            httpResponser. query = urlConnection.getURL().getQuery(); 
            httpResponser. ref = urlConnection.getURL().getRef(); 
            httpResponser. userInfo = urlConnection.getURL().getUserInfo(); 
  
            httpResponser. content = new String(temp.toString().getBytes(), ecod); 
            httpResponser. contentEncoding = ecod; 
            httpResponser. code = urlConnection.getResponseCode(); 
            httpResponser. message = urlConnection.getResponseMessage(); 
            httpResponser. contentType = urlConnection.getContentType(); 
            httpResponser. method = urlConnection.getRequestMethod(); 
            httpResponser. connectTimeout = urlConnection.getConnectTimeout(); 
            httpResponser. readTimeout = urlConnection.getReadTimeout(); 
  
            return httpResponser; 
        } catch (IOException e) { 
            throw e; 
        } finally { 
            if (urlConnection != null) 
                urlConnection.disconnect(); 
        } 
    } 
  
    /**
     * 默认的响应字符集
     */ 
    public String getDefaultContentEncoding() { 
        return this.defaultContentEncoding; 
    } 
  
    /**
     * 设置默认的响应字符集
     */ 
    public void setDefaultContentEncoding(String defaultContentEncoding) { 
        this.defaultContentEncoding = defaultContentEncoding; 
    } 
}





/*其次我们来看看响应对象(HttpRespons )。 响应对象其实只是一个数据BEAN ,由此来封装请求响应的结果数据,如下:
java代码  */
import java.util.Vector; 
  
/**
* 响应对象
*/
public class HttpRespons { 
  
    String urlString; 
  
   int defaultPort; 
 
   String file; 
 
   String host; 
 
   String path; 
 
   int port; 
 
   String protocol; 
 
   String query; 
 
   String ref; 
 
   String userInfo; 
 
   String contentEncoding; 
 
   String content; 
 
   String contentType; 
 
   int code; 
 
   String message; 
 
   String method; 
 
   int connectTimeout; 
 
   int readTimeout; 
 
   Vector<String> contentCollection; 
 
   public String getContent() { 
       return content; 
   } 
 
   public String getContentType() { 
       return contentType; 
   } 
 
   public int getCode() { 
       return code; 
   } 
 
   public String getMessage() { 
       return message; 
   } 
 
   public Vector<String> getContentCollection() { 
       return contentCollection; 
   } 
 
   public String getContentEncoding() { 
       return contentEncoding; 
   } 
 
   public String getMethod() { 
       return method; 
   } 
 
   public int getConnectTimeout() { 
       return connectTimeout; 
   } 
 
   public int getReadTimeout() { 
       return readTimeout; 
   } 
 
   public String getUrlString() { 
       return urlString; 
   } 
 
   public int getDefaultPort() { 
       return defaultPort; 
   } 
 
   public String getFile() { 
       return file; 
   } 
 
   public String getHost() { 
       return host; 
   } 
 
   public String getPath() { 
       return path; 
    } 
  
    public int getPort() { 
        return port; 
    } 
  
    public String getProtocol() { 
        return protocol; 
    } 
  
    public String getQuery() { 
        return query; 
    } 
  
    public String getRef() { 
        return ref; 
    } 
  
    public String getUserInfo() { 
        return userInfo; 
    } 
  
}
import java.util.Vector;

*//**
* 响应对象
*//*
public class HttpRespons {

      String urlString;

       int defaultPort;

      String file;

      String host;

      String path;

       int port;

      String protocol;

      String query;

      String ref;

      String userInfo;

      String contentEncoding;

      String content;

      String contentType;

       int code;

      String message;

      String method;

       int connectTimeout;

       int readTimeout;

      Vector<String> contentCollection;

       public String getContent() {
             return content;
      }

       public String getContentType() {
             return contentType;
      }

       public int getCode() {
             return code;
      }

       public String getMessage() {
             return message;
      }

       public Vector<String> getContentCollection() {
             return contentCollection;
      }

       public String getContentEncoding() {
             return contentEncoding;
      }

       public String getMethod() {
             return method;
      }

       public int getConnectTimeout() {
             return connectTimeout;
      }

       public int getReadTimeout() {
             return readTimeout;
      }

       public String getUrlString() {
             return urlString;
      }

       public int getDefaultPort() {
             return defaultPort;
      }

       public String getFile() {
             return file;
      }

       public String getHost() {
             return host;
      }

       public String getPath() {
             return path;
      }

       public int getPort() {
             return port;
      }

       public String getProtocol() {
             return protocol;
      }

       public String getQuery() {
             return query;
      }

       public String getRef() {
             return ref;
      }

       public String getUserInfo() {
             return userInfo;
      }

}




最后,让我们写一个应用类,测试以上代码是否正确

Java代码
import com.yao.http.HttpRequester; 
import com.yao.http.HttpRespons; 
  
public class Test { 
    public static void main(String[] args) { 
        try { 
            HttpRequester request = new HttpRequester(); 
            HttpRespons hr = request.sendGet( "http://www.csdn.net"); 
 
            System. out.println(hr.getUrlString()); 
            System. out.println(hr.getProtocol()); 
            System. out.println(hr.getHost()); 
            System. out.println(hr.getPort()); 
            System. out.println(hr.getContentEncoding()); 
            System. out.println(hr.getMethod()); 
             
            System. out.println(hr.getContent()); 
  
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 

分享到:
评论

相关推荐

    JAVA编程通用范例

    6. **网络编程**:Java提供了Socket和ServerSocket类进行TCP/IP通信,以及HttpURLConnection进行HTTP请求。通用范例会演示如何建立客户端和服务端的连接,发送和接收数据。 7. **反射API**:Java反射机制允许在运行...

    java开发范例大全

    范例可能涵盖TCP和UDP通信,以及HTTP请求的实现。 9. **GUI编程**:Java Swing和JavaFX库可用于创建图形用户界面。通过实例,你可以学习如何创建窗口、按钮、文本框等组件,并实现事件监听。 10. **数据库操作**:...

    Python 范例

    范例可能包含简单的HTTP请求或套接字通信的实例。 7. **数据处理与科学计算**:Python的`pandas`和`numpy`库是数据分析的强大工具,`matplotlib`则用于数据可视化。如果压缩包中有相关范例,可以帮助学习者理解如何...

    Android例子(抽屉布局、HTTP请求、图标范例)

    这是我做的一个关于项目管理的程序的Android端,采用抽屉侧边栏(drawerlayout)布局,采用handler机制切换主页面ListVIew的数据,采用http+json获取数据。其中数据统计引入了Android的图表插件。

    VB经典范例

    这需要对网络编程有深入理解,包括URL请求、流解析和媒体播放控制。 4. **发送E-MAIL**:VB提供了System.Net.Mail命名空间,可以用来发送电子邮件。学习这个范例,你可以掌握SMTP(简单邮件传输协议)的工作原理,...

    SPRINGMVC 注解范例程序

    控制器类通常包含多个处理方法,每个方法对应一个特定的HTTP请求。 2. **@RequestMapping**:这个注解用于映射 HTTP 请求到处理方法。可以放在类级别或方法级别,类级别的映射提供了一种粗粒度的匹配,而方法级别的...

    淘宝API .net 范例

    为了更好地利用这个范例,开发者应熟悉.NET编程,理解HTTP请求和响应,以及基本的JSON或XML解析。同时,阅读淘宝API的官方文档和SDK文档是必不可少的,以便了解各个API的功能、参数和返回值。 总的来说,"淘宝API ...

    Android 开发范例代码大全(第2版)(附源码)

    3. **网络通信**:通过HTTP请求、JSON解析和RESTful API调用的实例,展示了如何进行网络数据的获取与交换,同时涵盖了异步任务处理,防止应用因长时间网络操作而阻塞UI线程。 4. **多媒体处理**:包含音频、视频的...

    ajax使用,实现百度搜索范例

    2. **HTTP请求过程**: 发起一个Ajax请求通常包括以下步骤: - 初始化XMLHttpRequest对象。 - 打开连接:`xhr.open('GET'/'POST', 'url', true)`,其中GET/POST是请求类型,'url'是请求地址,true表示异步请求。 -...

    C#经典范例50例

    读者将学会如何使用这些库来实现数据序列化、文件读写、HTTP请求等功能。 最后,随着.NET Core的兴起,跨平台开发成为可能。书中可能包含有关创建跨平台应用的例子,介绍如何利用.NET Core的兼容性和性能优势。 ...

    Google Android SDK开发范例大全(完整版)

    7. **网络通信**:Android应用经常需要与服务器进行数据交换,涉及HTTP请求、WebSocket、FTP等。书中的范例可能包括使用HttpURLConnection、OkHttp、Volley等库进行网络请求的实现。 8. **多媒体处理**:Android...

    Android通信(Socket及http)全集范例

    为了实际操作,你可以参考“Android通信(Socket及http)全集范例”中的示例代码。这些示例将帮助你理解如何在Android环境中设置Socket和HTTP连接,发送和接收数据,以及处理可能出现的异常情况。通过实践,你可以更...

    C++ Qt5 范例开发大全,qt5开发及实例,QT

    进一步,书中可能包含对网络编程的讲解,如HTTP请求、套接字通信,这对于开发需要网络功能的应用非常有用。还有数据库操作,如SQLite或MySQL的支持,使开发者可以实现数据存储和检索功能。 文件I/O和资源管理也是...

    Java通用范例开发金典源代码

    - HTTP客户端:如使用HttpURLConnection实现HTTP请求。 7. **数据库操作** - JDBC基础:连接数据库,执行SQL语句,处理结果集。 - 数据库连接池:如C3P0或DBCP的配置和使用。 8. **GUI编程** - Swing组件:...

    《PHP 程序开发范例宝典》源代码

    8. **Web开发**:表单数据的获取和验证,HTTP请求和响应的理解,以及如何利用PHP处理用户交互。 9. **Session和Cookie**:这两种技术用于在Web应用程序中存储用户状态,学习它们的工作原理和使用场景。 通过深入...

    JAVA WEB程序开发范例宝典1-2章源代码

    Servlet是Java Web编程的基础,它允许我们扩展服务器的功能,处理HTTP请求并返回响应。 第2章可能进一步探讨了JavaServer Pages (JSP)技术。JSP是Servlet的一种简化形式,使得动态网页的开发更加直观。开发者会学习...

    c#程序范例开发大全

    C#范例部分可能包括了如文件操作(读写文件、目录管理)、网络通信(HTTP请求、TCP/IP套接字)、多线程编程、异常处理、图形绘制、数据库操作(ADO.NET使用)等多个方面。这些实例旨在帮助开发者全面掌握C#的基本...

    JavaScript使用范例宝典

    你可以学习到如何配置Jetty,部署静态资源和Servlet,以及如何处理HTTP请求。 通过深入学习JavaScript,你不仅可以创建动态网页,还可以涉足更高级的应用,如Node.js后端开发,构建实时通信应用,或者进行游戏开发...

    iOS 开发范例实战宝典(进阶篇)

    8. **网络**:URLSession是iOS主要的网络通信工具,支持HTTP/HTTPS请求,可处理异步加载、上传下载任务。此外,AFNetworking和Alamofire等第三方库则提供了更简洁的API,简化网络编程。 在"iOS 7典型实例大全源代码...

    Filter使用范例--登陆验证

    在"Filter使用范例--登陆验证"这个场景中,`Filter`的主要任务是对每个HTTP请求进行检查,确保用户已经登录才能访问特定资源。未登录的用户会被重定向到登录页面。具体步骤如下: 1. **配置Filter**:在`web.xml`...

Global site tag (gtag.js) - Google Analytics