- 浏览: 154545 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 920本文仅适合maven初学者,适合那些像我一样平时不使用mav ... -
Java Des算法实现高速文件加密解密
2016-06-01 15:09 1645import java.io.FileInputStream ... -
Java比较两个数据库中所有表的区别【支持Oracle和SQLServer】
2014-12-09 14:37 4956开发过程中一般是一开发数据库 一生产数据库。 有时候在开发 ... -
根据数据库注释自动生成数据库文档【支持Oracle和Mysql】
2014-11-28 11:02 4101公司项目比较乱,很多时候都是需要先完成项目再准备文档。 数 ... -
根据SVN日志自动生成补丁包[基于Tomcat的JavaEE项目]
2014-11-25 10:08 2321项目开发过程中代码变化很频繁,需要更新文件时,每次都需要手 ... -
用批处理文件为JavaSE项目快速简单的的加载jar包
2014-02-22 10:39 614JavaSE小项目,有时候需要引入很多jar包,但是手动去修 ... -
java中WebService的HelloWorld
2011-11-14 07:24 1631WebService的HelloWorld 首先,在MyEc ... -
Swing中的JOptionPane类
2011-11-14 07:24 1724Swing中的JOptionPane类详解JOptionPan ... -
java输出PDF文档
2011-11-14 07:24 2660PDF输出用到iText包,由于PDF文档的特殊性,有可能需要 ... -
Java生成图片验证码
2011-11-14 07:24 2801Java生成图片验证码部分代码参考自网易博客白云城主的大作制作 ... -
java生成缩略图
2011-11-11 20:12 1052公司一些项目中经常把用户上传的原图用IMG标签改变尺寸后直接在 ... -
java读取和输出Excel
2011-11-11 20:11 1232Excel读取和输入要用到JXL包 输出Excel的代码示例 ... -
Java IO 中对象的序列化操作
2011-06-12 16:54 1107Java IO 中对象的序列化 ... -
ireport和jasperReport生成统计报表的helloworld
2010-08-04 22:51 2641本文只涉及到简单的动态数据传递 首先使用ireport创建模 ... -
使用Java 发送电子邮件
2010-08-04 22:33 1702一个采用sun的类库的java发送邮件的demo 因为使用的 ... -
Java的远程方法调用 RMI 的 HelloWorld 程序
2010-07-29 16:11 1859本文大部分内容来自 http://www.jspcn.net/ ... -
设计模式 之 工厂模式
2010-07-28 21:45 1565常用设计模式之 工厂模 ... -
设计模式 之 单例模式
2010-07-28 21:44 1529单例模式:设计中有时候需要使某个对象在整个系统中只存在一个 ... -
使用递归和dom遍历dom树形结构
2010-07-28 21:39 2564使用递归逆推出xml文件的大体结构 package com. ... -
使用jdom解析xml文件
2010-07-28 21:38 1570使用jdom解析xml package com.dowebb ...
相关推荐
用HTML页面模拟测试get/post请求,psot请求参数的格式为json串
JAVA-用HttpClient来模拟浏览器GET,POST.docx
用HttpClient来模拟浏览器GET_POST,技术简单学!!
httpclient实现的工具类含有以下功能: 1、后台模拟发送GET请求 2、后台模拟发送POST请求 3、解决了中文乱码
C# 使用Get和Post请求获取数据,Get Post 请求, POST传值
【1】哪些人可以用到 1,不知道咋get、post请求的;...模拟请求串可以自己写,重点是借鉴一下加密方式,如果不会get和post的也可以翻一下里面的局部代码直接拿去用。 【4】留个 E麦 多多交流:guangxfxj圈sina.com
HTTP 的工作方式是客户机与服务器之间的请求-应答协议。...在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。 GET - 从指定的资源请求数据。 POST - 向指定的资源提交要被处理的数据
Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,...
当然了,正如前面说到的,如果我们自己使用java.net.HttpURLConnection来搞定这些问题是很恐怖的事情,因此在开始之前我们先要介绍一下一个开放源码的项目,这个项目就是Apache开源组织中的httpclient,它隶属于...
httpclient的用法,发送get请求和post请求,设置header
winform GET请求和POST请求! 很值得下载看看!资源免费,大家分享!!
GET和POST请求是HTTP协议中的两种基本请求方法,它们在数据传输和处理方面有着显著的区别。 GET请求主要用于从服务器检索(或获取)数据。当浏览器发送GET请求时,请求的数据会附加到URL中,以查询字符串的形式发送...
C++实现HTTP的GET,POST请求及HTTPS的请求
Ajax中Get请求和Post请求的区别 简单例子 何时使用Get请求,何时使用Post请求
ajax简易模型 兼容多个浏览器(ff ie ...) get post请求
C# http Get/POST请求封装类
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。