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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.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);
}