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

[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对象作为参数。

你可能感兴趣的:([HttpClient] 创建一个HTTP POST 请求 (from Jakarta Commons cookbook 11.7 ))