- 浏览: 158716 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wcnmbbbb:
com.lowagie.text 对应的包呢?
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】 -
greatwqs:
序列化算法这篇不错 : http://greatwqs.ite ...
Java IO 中对象的序列化操作 -
litao11046:
为什么使用get的时候要把具体的方法名加入hidden作为隐藏 ...
Struts DispatchAction基本的请求分发
ApacheClient简介
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.1.
模拟GET请求
HttpClient client = new DefaultHttpClient(); //get..........get the login page String getUrl = "http://124.130.149.167:8888/nroa"; HttpGet get = new HttpGet(getUrl); //execute get connection HttpResponse response = client.execute(get); if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ //request success String strResult = EntityUtils.toString(response.getEntity()); }else{ System.out.println("Error code:" +response.getStatusLine().getStatusCode()); } 模拟post请求 //post...post the username and password to login String postUrl = "http://124.130.149.167:8888/nroa/checkLogin.do"; HttpPost post = new HttpPost(postUrl); List<NameValuePair> params = new ArrayList<NameValuePair>(); NameValuePair username = new BasicNameValuePair("USER_ID","test"); NameValuePair password = new BasicNameValuePair("PASSWORD","1111"); params.add(username); params.add(password); HttpEntity entity = new UrlEncodedFormEntity(params,"GBK"); post.setEntity(entity); response = client.execute(post); if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ //request success String strResult = EntityUtils.toString(response.getEntity()); }else{ System.out.println("Error code:" +response.getStatusLine().getStatusCode()); }
常见问题:
1.post后由于页面发生跳转(比如由login.do跳转到main.jsp)
由于技术限制,以及为保证2.0发布版API的稳定,HttpClient还不能自动处重定向,但对重定向到同一主机、同一端口且采用同一协议的情况HttpClient可以支持。不能自动的处理的情况,包括需要人工交互的情况,或超出httpclient的能力。
当服务器重定向指令指到不同的主机时,HttpClient只是简单地将重定向状态码作为应答状态。所有的300到399(包含两端)的返回码,都表示是重定向应答。常见的有:
1. 301 永久移动. HttpStatus.SC_MOVED_PERMANENTLY
2. 302 临时移动. HttpStatus.SC_MOVED_TEMPORARILY
3. 303 See Other. HttpStatus.SC_SEE_OTHER
4. 307 临时重定向. HttpStatus.SC_TEMPORARY_REDIRECT
解决方案:在请求提交后再执行一次请求(如向login.do提交post请求后,再发送一次到main.jsp的get请求),代码如下:
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ //request success String strResult = EntityUtils.toString(response.getEntity()); }if(response.getStatusLine().getStatusCode()==HttpStatus.SC_MOVED_TEMPORARILY){ //login success,redirected,get the target url post.abort();//release the post connection 这句很重要 String turl = response.getLastHeader("Location").getValue(); //get to the main page after logining... get = new HttpGet(turl); response = client.execute(get); if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ } }
发表评论
-
使用Maven构建一个开源项目的代码结构
2017-01-18 12:29 960本文仅适合maven初学者,适合那些像我一样平时不使用mav ... -
Java Des算法实现高速文件加密解密
2016-06-01 15:09 1717import java.io.FileInputStream ... -
Java比较两个数据库中所有表的区别【支持Oracle和SQLServer】
2014-12-09 14:37 5011开发过程中一般是一开发数据库 一生产数据库。 有时候在开发 ... -
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】
2014-11-28 11:02 4161公司项目比较乱,很多时候都是需要先完成项目再准备文档。 数 ... -
根据SVN日志自动生成补丁包[基于Tomcat的JavaEE项目]
2014-11-25 10:08 2403项目开发过程中代码变化很频繁,需要更新文件时,每次都需要手 ... -
用批处理文件为JavaSE项目快速简单的的加载jar包
2014-02-22 10:39 680JavaSE小项目,有时候需要引入很多jar包,但是手动去修 ... -
java中WebService的HelloWorld
2011-11-14 07:24 1689WebService的HelloWorld 首先,在MyEc ... -
Swing中的JOptionPane类
2011-11-14 07:24 1807Swing中的JOptionPane类详解JOptionPan ... -
java输出PDF文档
2011-11-14 07:24 2748PDF输出用到iText包,由于PDF文档的特殊性,有可能需要 ... -
Java生成图片验证码
2011-11-14 07:24 2836Java生成图片验证码部分代码参考自网易博客白云城主的大作制作 ... -
java生成缩略图
2011-11-11 20:12 1090公司一些项目中经常把用户上传的原图用IMG标签改变尺寸后直接在 ... -
java读取和输出Excel
2011-11-11 20:11 1305Excel读取和输入要用到JXL包 输出Excel的代码示例 ... -
Java IO 中对象的序列化操作
2011-06-12 16:54 1167Java IO 中对象的序列化 ... -
ireport和jasperReport生成统计报表的helloworld
2010-08-04 22:51 2705本文只涉及到简单的动态数据传递 首先使用ireport创建模 ... -
使用Java 发送电子邮件
2010-08-04 22:33 1773一个采用sun的类库的java发送邮件的demo 因为使用的 ... -
Java的远程方法调用 RMI 的 HelloWorld 程序
2010-07-29 16:11 1899本文大部分内容来自 http://www.jspcn.net/ ... -
设计模式 之 工厂模式
2010-07-28 21:45 1615常用设计模式之 工厂模 ... -
设计模式 之 单例模式
2010-07-28 21:44 1565单例模式:设计中有时候需要使某个对象在整个系统中只存在一个 ... -
使用递归和dom遍历dom树形结构
2010-07-28 21:39 2610使用递归逆推出xml文件的大体结构 package com. ... -
使用jdom解析xml文件
2010-07-28 21:38 1612使用jdom解析xml package com.dowebb ...
相关推荐
JAVA使用HttpClient模拟浏览器GET、POST请求 在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化...
使用HttpClient来模拟浏览器GET_POST HttpClient是一个Apache开源组织中的项目,隶属于Jakarta的commons项目,旨在简化HTTP客户端与服务器进行各种通讯编程。通过使用HttpClient,可以轻松地解决以前很头疼的事情,...
在上面的代码中,我们首先使用 HttpPost 方法模拟浏览器登录到服务器,然后使用 HttpGet 方法请求需要的资源。在整个过程中,我们使用的是 DefaultHttpClient 对象,并使用 PoolingClientConnectionManager 来管理...
本文详细介绍了如何使用Apache HttpClient库在Java中模拟发送Http GET和POST请求的方法。通过这种方式,可以在开发过程中高效地进行测试、调试等工作。同时,Apache HttpClient还提供了更多高级功能,如SSL/TLS支持...
GET请求用于获取资源,POST请求常用于提交表单数据。 3. **请求配置**:在发送请求前,我们可以设置各种参数,如超时时间、重试策略、连接池等。 4. **执行请求**:使用HttpClient的`execute`方法发送请求,并得到...
在Java编程中,HttpClient库是Apache提供的一款强大的HTTP客户端工具,用于执行HTTP请求,包括GET、POST、PUT等多种HTTP方法。...对于更复杂的情况,可能需要使用HTMLUnit或Selenium等工具进行浏览器级别的模拟登录。
然后,使用HttpURLConnection发送GET或POST请求: ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(...
以下是一个使用OkHttp发送POST请求的例子: ```java OkHttpClient client = new OkHttpClient(); RequestBody formBody = new FormBody.Builder() .add("key1", "value1") .build(); Request request = new ...
在Java开发中,创建一个简单的网络爬虫是一个...通过HttpWatch等工具分析HTTP交互,结合HttpClient发送GET和POST请求,可以构建起基本的网络爬虫框架。随着项目复杂性的增加,你需要掌握更多高级技巧,以应对各种挑战。
- 也可以使用Jersey提供的客户端API,如`Client`和`WebTarget`,它们提供了更友好的接口来构建和执行请求。 5. **JSON序列化与反序列化**: - RESTful服务通常使用JSON格式交换数据,因此需要处理JSON的序列化和...
如果必须传递大量数据,考虑使用POST请求或者将数据转换为查询字符串以外的形式,比如JSON格式。 2. **调整服务器配置**:针对Nginx等服务器,可以修改配置文件,增加`client_header_buffer_size`和`large_client_...
客户端(浏览器)方面,虽然我们不能直接编写浏览器,但可以理解其工作原理,例如使用HTTP库(如Apache HttpClient)模拟浏览器行为,向服务器发送请求并接收响应。 了解Web服务器与浏览器的交互对于开发Web应用至...
在Java中,HTTP客户端库是用来模拟浏览器行为,发送HTTP请求和处理响应的工具。它们提供了API,使得开发者可以方便地创建和发送HTTP请求,获取服务器的响应,并进行各种操作,如解析响应体、处理头信息等。 3. **...
1. **发送HTTP请求**:HttpUnit可以模拟浏览器向服务器发送GET、POST和其他类型的HTTP请求,允许你设置各种请求头和参数,以便精确控制请求行为。 2. **处理响应**:接收到服务器响应后,HttpUnit可以解析HTML、XML...
在Java爬虫中,你需要这个库来发送GET和POST请求,获取网页内容,这通常是爬虫的第一步。`httpcomponents-client-4.3.1`提供了许多高级功能,如连接管理、重试策略、身份验证和 Cookie 管理,这些都是构建高效和可靠...
该库提供了强大的功能来处理HTTP请求和响应,如POST请求的构建、设置请求头等。 #### 日志记录 日志记录是软件开发中非常重要的一部分,它有助于调试和追踪问题。本代码中使用了Apache Commons Logging进行日志...
使用HttpClient,开发者可以模拟浏览器行为,对网页进行爬取或自动化测试。以下是一些关键知识点: 1. **HttpClient实例化**:首先,你需要创建一个HttpClient实例,这通常是通过HttpClientBuilder或...
HttpClient允许你模拟浏览器行为,发送GET、POST以及其他HTTP方法的请求,并处理服务器返回的各种内容,包括HTML、XML、JSON等。在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 ...
3. **GET和POST请求**:GET用于获取资源,其参数显示在URL中;POST用于向服务器提交数据,常用于表单提交,参数隐藏在请求体中。 4. **Web服务器配置**:涉及到端口设置、域名绑定、虚拟主机、日志记录、安全设置等...