如何使用java发送post请求

Python020

如何使用java发送post请求,第1张

/**

* 向指定 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

}

Http请求类

package wzh.Http

import java.io.BufferedReader

import java.io.IOException

import java.io.InputStreamReader

import java.io.PrintWriter

import java.net.URL

import java.net.URLConnection

import java.util.List

import java.util.Map

public class HttpRequest {

/**

* 向指定URL发送GET方法的请求

*

* @param url

*发送请求的URL

* @param param

*请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

* @return URL 所代表远程资源的响应结果

*/

public static String sendGet(String url, String param) {

String result = ""

BufferedReader in = null

try {

String urlNameString = url + "?" + param

URL realUrl = new URL(urlNameString)

// 打开和URL之间的连接

URLConnection connection = realUrl.openConnection()

// 设置通用的请求属性

connection.setRequestProperty("accept", "*/*")

connection.setRequestProperty("connection", "Keep-Alive")

connection.setRequestProperty("user-agent",

"Mozilla/4.0 (compatibleMSIE 6.0Windows NT 5.1SV1)")

// 建立实际的连接

connection.connect()

// 获取所有响应头字段

Map<String, List<String>>map = connection.getHeaderFields()

// 遍历所有的响应头字段

for (String key : map.keySet()) {

System.out.println(key + "--->" + map.get(key))

}

// 定义 BufferedReader输入流来读取URL的响应

in = new BufferedReader(new InputStreamReader(

connection.getInputStream()))

String line

while ((line = in.readLine()) != null) {

result += line

}

} catch (Exception e) {

System.out.println("发送GET请求出现异常!" + e)

e.printStackTrace()

}

// 使用finally块来关闭输入流

finally {

try {

if (in != null) {

in.close()

}

} catch (Exception e2) {

e2.printStackTrace()

}

}

return result

}

/**

* 向指定 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

}

}

调用方法:

public static void main(String[] args) {

//发送 GET 请求

String s=HttpRequest.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456")

System.out.println(s)

//发送 POST 请求

String sr=HttpRequest.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456")

System.out.println(sr)

}

private void postMethod(String url) throws IOException

 {     

  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.")

      }

  }

 

 

 

 }