`
hao861002
  • 浏览: 87395 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpClient 学习整理(2)

阅读更多

2 GET或者POST方式向网页提交参数

其实前面一个最简单的示例中我们已经介绍了如何使用GET或者POST方式来请求一个页面,本小节与之不同的是多了提交时设定页面所需的参数,我们知道如果是GET的请求方式,那么所有参数都直接放到页面的URL后面用问号与页面地址隔开,每个参数用&隔开,例如:http://java.sun.com/?name=liudong&mobile=123456,但是当使用POST方法时就会稍微有一点点麻烦。本小节的例子演示向如何查询手机号码所在的城市,代码如下:

 

/*
* Created on 2003-12-7 by Liudong 
*/

package http.demo;
import java.io.IOException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;

/** 
 *提交参数演示
 *
该程序连接到一个用于查询手机号码所属地的页面
 *以便查询号码段1330227所在的省份以及城市
 *@authorLiudong
 */

public class SimpleHttpClient { 
   public static void main(String[] args) throws IOException {
      HttpClient client =
new HttpClient();
      client.getHostConfiguration().setHost(
"www.imobile.com.cn" , 80, "http" );
      method = getPostMethod(); 
   // 使用 POST 方式提交数据 
      client.executeMethod(method);   //打印服务器返回的状态 
      System.out.println(method.getStatusLine());   //打印结果页面
      Stringresponse=newString(method.getResponseBodyAsString().getBytes("8859_1"));

      //打印返回的信息
      System.out.println(response);
      method.releaseConnection();
   }

   /** 
    * 使用 GET 方式提交数据 
    *@return 
    */

   privatestaticHttpMethodgetGetMethod(){
      returnnewGetMethod("/simcard.php?simcard=1330227");
   }

       /** 
     * 使用 POST 方式提交数据 
     *@return 
     */

       private static HttpMethod getPostMethod(){
      PostMethod post =
new PostMethod( "/simcard.php" );
      NameValuePair simcard =
new NameValuePair( "simcard" , "1330227" );
      post.setRequestBody(
new NameValuePair[] { simcard});
      return post;
   }
}

在上面的例子中页面http://www.imobile.com.cn/simcard.php需要一个参数是simcard,这个参数值为手机号码段,即手机号码的前七位,服务器会返回提交的手机号码对应的省份、城市以及其他详细信息。GET的提交方法只需要在URL后加入参数信息,而POST则需要通过NameValuePair类来设置参数名称和它所对应的值。

3
 处理页面重定向

JSP/Servlet编程中response.sendRedirect方法就是使用HTTP协议中的重定向机制。它与JSP中的<jsp:forward …>的区别在于后者是在服务器中实现页面的跳转,也就是说应用容器加载了所要跳转的页面的内容并返回给客户端;而前者是返回一个状态码,这些状态码的可能值见下表,然后客户端读取需要跳转到的页面的URL并重新加载新的页面。就是这样一个过程,所以我们编程的时候就要通过HttpMethod.getStatusCode()方法判断返回值是否为下表中的某个值来判断是否需要跳转。如果已经确认需要进行页面跳转了,那么可以通过读取HTTP头中的location属性来获取新的地址。

状态码

对应 HttpServletResponse 的常量

详细描述

301

SC_MOVED_PERMANENTLY

页面已经永久移到另外一个新地址

302

SC_MOVED_TEMPORARILY

页面暂时移动到另外一个新的地址

303

SC_SEE_OTHER

客户端请求的地址必须通过另外的 URL 来访问

307

SC_TEMPORARY_REDIRECT

SC_MOVED_TEMPORARILY

分享到:
评论

相关推荐

    HttpClient3.1 学习整理

    HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://example.com"); int statusCode = httpClient.executeMethod(getMethod); if (statusCode == 200) { System.out....

    HttpClient_学习整理.

    ### HttpClient 学习整理 #### 一、简介 `HttpClient`是Apache Jakarta Commons下的一个子项目,用于提供高效、最新及功能丰富的HTTP客户端编程工具包。对于那些希望通过HTTP协议访问网络资源的Java应用程序而言,...

    httpclient4中文API和使用

    `httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...

    JAVA核心知识点整理 全面整理.zip

    - **HTTP客户端**: 学习使用HttpURLConnection或HttpClient库发送HTTP请求并处理响应。 7. **反射机制** - **Class对象**: 理解如何获取类的信息,包括类名、方法、属性等。 - **动态代理**: 探究如何在运行时...

    最近在学习常用的Java开源项目,整理一下常用的代码.zip

    以下是对"最近在学习常用的Java开源项目,整理一下常用的代码.zip"这个压缩包中可能包含的知识点的详细解释: 1. **Maven或Gradle构建工具**:Java项目通常使用Maven或Gradle进行构建和依赖管理。通过查看项目的pom...

    基于Java的工具类学习项目.zip

    本项目是一个基于Java的工具类学习项目,旨在整理和演示各种工具类的使用方法。项目涵盖了从Excel处理、HTTP请求、JSON序列化到高性能网络框架Netty的使用等多个方面。通过本项目,开发者可以学习到如何使用这些工具...

    源码 网站交互&JSON&xml&Webservice 通过httpclient获取到JSON数据展示到ListView

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    安卓开发工具箱v2.8.5高级版.txt打包整理.zip

    "apache"可能指的是Apache开源项目,或者是使用了Apache相关的技术,例如Apache HttpClient或Apache Ant等,这些在Android开发中常见且重要。而"#资源达人分享计划#"可能是一个社区活动或者论坛的标签,表示这是由...

    安卓京东2022自动炸年兽v2.0.txt打包整理.zip

    2. **Java编程**:作为安卓应用的开发语言,需要熟悉Java语法、面向对象编程、异常处理、集合框架等。 3. **网络请求**:由于炸年兽活动可能涉及到网络交互,所以开发者可能使用了HTTP请求库,如Apache HttpClient,...

    安卓点击助手v12.8绿化版.txt打包整理.zip

    2. **绿化版应用**:了解什么是绿化版应用,它们如何通过去除广告、解除权限限制等方式提升用户体验,以及绿化过程中的技术实现,如签名证书的修改、APK反编译和重打包等。 3. **Apache HttpClient**:在安卓开发中...

    FaceLook项目源码整理

    "FaceLook项目源码整理"是一个专注于Java编程的开源项目,它可能包含了用于面部识别、图像处理或视觉计算的相关代码。这个项目的目的是为了让开发者能够学习、理解和应用相关的技术。从提供的文件列表来看,我们可以...

    轻松上手Java爬虫:CSDN文章抓取与整理.zip

    在本压缩包中,你将找到一个Java实现的CSDN文章抓取与整理的项目,这将是一个很好的起点来学习和实践Java爬虫技术。 首先,了解Java爬虫的基础是必不可少的。Java作为一种流行的编程语言,拥有强大的网络处理库,如...

    安卓可抖视v1.2.9免费版.txt打包整理.zip

    【标题解析】 "安卓可抖视v1.2.9免费版.txt打包...对于开发者而言,这个压缩包是一个学习和参考的宝贵资源,涵盖了实际开发中的多个方面,从编程语言到应用设计,再到商业运营,都是提升技能和了解行业趋势的重要途径。

    Java手机短信项目源码Java实用源码整理learns

    这是一份实用的源码整理,对于想要深入学习Java编程,特别是对Java在实际项目中的运用感兴趣的开发者来说,是非常有价值的参考资料。 1. **短信服务接口**:在Java项目中,通常会定义一个短信服务接口,这个接口...

    C#基类整理C#比较全的基类集合

    这个压缩包文件“C#基类整理C#比较全的基类集合”可能包含了一系列C#基础类的代码示例和解释,帮助开发者理解和运用这些类。 首先,我们来看一下C#中的几个关键基类: 1. **System.Object**:所有C#类的终极基类,...

    本人整理的一些常用的c#代码

    这个压缩包“本人整理的一些常用的c#代码”显然是一个针对初学者的学习资源集合,包含了各种实用的C#代码示例,旨在帮助新手快速掌握编程基础。 1. **基础语法**:C#的基础语法结构包括变量声明、数据类型(如int、...

    Java核心知识点整理.rar

    这份"Java核心知识点整理.rar"压缩包包含了对Java语言全面而深入的总结,对于初学者和有一定经验的开发者来说,都是宝贵的参考资料。下面,我们将详细探讨Java的核心知识点,并按照一个合理的学习路线进行阐述。 1....

    s2深入.NET平台和C#编程课后、上机、指导练习答案项目案例和PPT

    学习者可以通过这个案例了解如何利用C#构建一个能够从服务器获取并显示新闻的应用,这将涉及HttpClient类的使用,XML或JSON数据的解析,以及WPF或WinForms的界面设计。 最后,"课程复习PPT"是整理了整个课程内容的...

    Java常用代码整理

    2. **类与对象**:面向对象是Java的核心特性,包括类的定义、对象的创建、封装、继承、多态等概念。同时,了解构造函数、析构函数以及访问修饰符(public、private、protected、默认)的使用也很关键。 3. **异常...

    JAVA核心知识点整理_java面试指南_java面试_

    2. 泛型:学习如何使用泛型限制集合元素类型,提高代码安全性和可读性。 3. 接口与实现:掌握List、Set、Map接口及其具体实现类的使用。 三、多线程 1. 线程基础:创建线程的方式(Thread类、Runnable接口),线程...

Global site tag (gtag.js) - Google Analytics