Java技术圆桌会-微信群,欢迎大家的加入,专注技术讨论和学习。
加入的同学可以先加我微信:luxun758521 备注-圆桌会,然后拉你进群。
-HttpClient 编程中,根据post和get请求不同,而参数的传递方式也不同。其中,post请求,参数放在请求体中;get请求,参数放在请求url中;
-post和get区别小结:post用于想服务器获取信息,数据量大,安全性高;get向服务器传递信息,数据量较小,且安全性低;get请求,用Request.QueryString来取得变量的值,而post请求,通过Request.Form来获取提交的内容。
-【注意】,在http协议中,并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务器能够处理的最大长度的URL的能力也是不一样的。具体 请参见-http://www.cnblogs.com/henryhappier/archive/2010/10/09/1846554.html
如下,post请求的一个案例:
package com.http;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.ws.Response;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.junit.Test;
public class HttpClientPost {
@Test
public void testPost(){
HttpClient client = new HttpClient();
StringBuilder sb = new StringBuilder();
InputStream is = null;
PostMethod method = new PostMethod("http://every360.esoon.com:82/SimpleServlet/add.do");
//method.setRequestHeader("Content-Type","application/html");
//传递 参数 放在 请求体 中
NameValuePair[] parm = {new NameValuePair("id","44"),new NameValuePair("name","tomcat"),new NameValuePair("age","55"),new NameValuePair("salary","65478")};
method.setRequestBody(parm);
try {
int code = client.executeMethod(method);
if(code==HttpStatus.SC_OK){
System.out.println("SUCCESS ;"+code);
is = method.getResponseBodyAsStream();
byte[] string = method.getResponseBodyAsString().getBytes("utf-8");
int len =0 ;
byte[] buf = new byte[1024];
while((len=is.read(buf))>0){
sb.append(new String(buf,0,len,"utf-8"));
}
System.out.println(sb.toString());
System.out.println("*************************");
byte[] responseBody = method.getResponseBody();
//处理内容
System.out.println(new String(responseBody)+">>>>");
System.out.println("getStatusLine:"+method.getStatusLine());
System.out.println("~~~"+method.getResponseBodyAsString());
System.out.println("statusCode:"+code);
//打印结果页面
String response = new String(method.getResponseBodyAsString().getBytes("utf-8"));
//打印返回的信息
System.out.println("response:"+response);
}else{
System.out.println("ERROR :"+code);
}
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
method.releaseConnection();
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}