HTTP请求中的POST和GET请求归总:

来源:互联网 发布:机电一体化网络教育 编辑:程序博客网 时间:2024/06/06 00:18
http://blog.sina.com.cn/s/blog_6d002146010130wv.html
package cn.com.shine.hotel.net;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;public class NetUtil {public String getHttpData(String app_host) {URL url = null;ByteArrayOutputStream arrayOutputStream = null;try {url = new URL(app_host);InputStream inputStream = null;arrayOutputStream = new ByteArrayOutputStream();HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 设置输入输出流connection.setDoInput(true);connection.setDoOutput(true);connection.setReadTimeout(2000);connection.setRequestMethod("GET");int responseCode = connection.getResponseCode();if (responseCode == 200) {// 获得输入流inputStream = connection.getInputStream();int len = 0;byte[] data = new byte[1024];while ((len = inputStream.read(data)) != -1) {arrayOutputStream.write(data, 0, len);}inputStream.close();}return new String(arrayOutputStream.toByteArray());} catch (IOException e) {e.printStackTrace();}return null;}public String SendMessageGet(String path, String ipaddress, String type) {// name:服务器端的用户名,pwd:服务器端的密码// 注意字符串连接时不能带空格String uri = path + "?ipaddress=" + ipaddress + "&type=" + type;String result = "";HttpGet httpGet = new HttpGet(uri);// 编者按:与HttpPost区别所在,这里是将参数在地址中传递try {HttpResponse response = new DefaultHttpClient().execute(httpGet);if (response.getStatusLine().getStatusCode() == 200) {HttpEntity entity = response.getEntity();result = EntityUtils.toString(entity, HTTP.UTF_8);}} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}public String SendMessage(String app_host, String ipnum, String type) {String strResult = null;HttpPost httpRequest = new HttpPost(app_host);try {StringEntity httpentity = new StringEntity("ipaddress=" + ipnum+ "&" + "type=" + type, "UTF-8");httpRequest.setEntity(httpentity);HttpClient httpclient = new DefaultHttpClient();HttpResponse httpResponse = httpclient.execute(httpRequest);if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {strResult = EntityUtils.toString(httpResponse.getEntity());}} catch (Exception e) {e.printStackTrace();}return strResult;}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.setReadTimeout(5000);// 建立实际的连接connection.connect();// 定义 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;}public String getReultForHttpPost(String name, String pwd)throws ClientProtocolException, IOException {// 服务器 :服务器项目 :servlet名称String path = "http://192.168.5.21:8080/test/test";HttpPost httpPost = new HttpPost(path);List<NameValuePair> list = new ArrayList<NameValuePair>();list.add(new BasicNameValuePair("name", name));list.add(new BasicNameValuePair("pwd", pwd));httpPost.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));// 编者按:与HttpGet区别所在,这里是将参数用List传递String result = "";HttpResponse response = new DefaultHttpClient().execute(httpPost);if (response.getStatusLine().getStatusCode() == 200) {HttpEntity entity = response.getEntity();result = EntityUtils.toString(entity, HTTP.UTF_8);}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 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送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;}// 发送 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);}

原创粉丝点击