{
url = "http://www.newsmth.net/bbslogin2.php"
PostMethod postMethod = new PostMethod(url)
NameValuePair[] data = { new NameValuePair("id", "herrapfel"),new NameValuePair("passwd", "") }
// 将表单的值放入postMethod中
postMethod.setRequestBody(data)
// 执行postMethod
int statusCode = httpClient.executeMethod(postMethod)
System.out.println(" status code:" + statusCode)
// HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
if(statusCode == HttpStatus.SC_OK)
{
StringBuffer contentBuffer = new StringBuffer()
InputStream in = postMethod.getResponseBodyAsStream()
BufferedReader reader = new BufferedReader(new InputStreamReader(in,postMethod.getResponseCharSet()))
String inputLine = null
while((inputLine = reader.readLine()) != null)
{
contentBuffer.append(inputLine)
System.out.println("input line:"+ inputLine)
contentBuffer.append("/n")
}
in.close()
}
else if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY)
{
// 从头中取出转向的地址
Header locationHeader = postMethod.getResponseHeader("location")
String location = null
if (locationHeader != null)
{
location = locationHeader.getValue()
System.out.println("The page was redirected to:" + location)
}
else
{
System.err.println("Location field value is null.")
}
}
}
/*** 向指定 URL 发送POST方法的请求
*
* @param url
*发送请求的 URL
* @param param
*请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null
BufferedReader in = null
String result = ""
try {
URL realUrl = new URL(url)
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection()
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*")
conn.setRequestProperty("connection", "Keep-Alive")
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatibleMSIE 6.0Windows NT 5.1SV1)")
// 发送POST请求必须设置如下两行
conn.setDoOutput(true)
conn.setDoInput(true)
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream())
// 发送请求参数
out.print(param)
// flush输出流的缓冲
out.flush()
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()))
String line
while ((line = in.readLine()) != null) {
result += line
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e)
e.printStackTrace()
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close()
}
if(in!=null){
in.close()
}
}
catch(IOException ex){
ex.printStackTrace()
}
}
return result
}