guangnian0412's BLOG

Java in my life

常用链接

统计

积分与排名

我关注的Blog

最新评论

[HttpClient] 创建一个HTTP POST 请求 (from Jakarta Commons cookbook 11.7 )

问题:
        你需要使用HTTP POST 方法来向一个servlet传递参数。

讨论:
        创建一个 PostMethod 对象,然后调用 setParameter() 或 addParameter() 方法设置参数。 PostMethod 对象将会传送一个 Content-Type 头为 application/x-www-form-urlencoded 的请求,并且参数将在请求body中被传送。在下列的例子中演示了用 PostMethod 对象传递参数的用法:
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

HttpClient client 
= new HttpClient( );

// Create POST method
String url = "http://www.discursive.com/cgi-bin/jccook/param_list.cgi";
PostMethod method 
= new PostMethod( url );

// Set parameters on POST    
method.setParameter( "test1""Hello World" );
method.addParameter( 
"test2""This is a Form Submission" );
method.addParameter( 
"Blah""Whoop" );
method.addParameter( 
new NameValuePair( "Blah""Whoop2" ) );

// Execute and print response
client.executeMethod( method );
String response 
= method.getResponseBodyAsString( );
System.out.println( response );

method.releaseConnection( );
      
param_list.cgi CGI脚本会对所以接收到的参数进行回显,从下面的输出中,你可以看到传递给CGI脚本的三个参数:
These are the parameters I received:

test1:
  Hello World
test2:
  This is a Form Submission
Blah:
  Whoop
  Whoop2
       有几种方法来在一个PostMethod对象中设置参数。最直接的方法就是调用setParameter()方法,并传递两个字符串给它:参数的名称和参数值。setParameter()方法将会替代任何已经存在的同名参数。但是,如果一个同名的参数已经存在一个PostMethod对象中,addParameter()将会加入另一个同名参数值;addParameter()方法同样接受两个String:参数名和参数值。另一种方法,这两个方法同样接受一个包装了参数名和参数值的NameValuePair对象。在前面的例子中,通过addParameter()方法,用参数名Blah传递了两个值,第一次用两个String作为参数,第二次用一个NameValuePair对象作为参数。

posted on 2006-04-11 22:41 guangnian 阅读(6689) 评论(4)  编辑  收藏 所属分类: Jakarta Commons

评论

# re: [HttpClient] 创建一个HTTP POST 请求 (from Jakarta Commons cookbook 11.7 ) 2007-01-10 15:19 happytian

调用method.setParameter传递中文,需要encode么?
用method.setRequestBody传递中文,encode一下,可以传递过去
用method.setParameter传递怎么也传不过去,请问什么原因?  回复  更多评论   

# re: [HttpClient] 创建一个HTTP POST 请求 (from Jakarta Commons cookbook 11.7 ) 2007-01-11 00:15 guangnian

@happytian
不好意思,没传递过中文的  回复  更多评论   

# re: [HttpClient] 创建一个HTTP POST 请求 (from Jakarta Commons cookbook 11.7 ) 2007-10-28 11:53 中华信鸽

学习了,写的真好,如果是get呢?  回复  更多评论   

# re: [HttpClient] 创建一个HTTP POST 请求 (from Jakarta Commons cookbook 11.7 ) 2011-09-23 11:25 makefu

good!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: