//
//
public class DataService {
/**
* 通过get请求提交数据到服务器
*
* @param path
* 服务器servlet的地址
* @param name
* 用户名
* @param password
* 密码
* @return 服务器返回回来的string数据
*/
// get 一次提交的数据量小于4K
public static String sendDataByGet(String path, String name, String password)
throws Exception {
String param1 = URLEncoder.encode(name);
String param2 = URLEncoder.encode(password);
URL url = new URL(path + "?name=" + param1 + "&password=" + param2);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5000);//设置超时时间为5s
// 获取服务器返回的流信息
InputStream is = conn.getInputStream();
byte[] result = StreamTool.getBytes(is);
return new String(result);
}
/**
* 采用post的方式 提交数据到服务器
*
* @param path
* 服务器servlet的地址
* @param name
* 用户名
* @param password
* 密码
* @return 服务器返回的数据信息
* @throws Exception
*/
// post 可以提交比较大的数据
public static String sendDataByPost(String path, String name,
String password) throws Exception {
String param1 = URLEncoder.encode(name);
String param2 = URLEncoder.encode(password);
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String data = "name=" + param1 + "&password=" + param2;
conn.setRequestMethod("POST");
conn.setConnectTimeout(5000);
// 设置 http协议可以向服务器写数据
conn.setDoOutput(true);
// 设置http协议的消息头
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", data.length() + "");
// 把准备好的data数据写给服务器
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());
// httpurlconnection 底层实现 outputstream 是一个缓冲输出流
// 只要我们获取任何一个服务器返回的信息 , 数据就会被提交给服务器 , 得到服务器返回的流信息
int code = conn.getResponseCode();
if (code == 200) {
InputStream is = conn.getInputStream();
byte[] result = StreamTool.getBytes(is);
return new String(result);
} else {
throw new IllegalStateException("服务器状态异常");
}
}
/**
* httpclient 浏览器的简单包装
* new HttpClient 就相当于得到了一个浏览器
*/
public static String sendDataByHttpClientGet (String path , String name,String password) throws Exception{
//1. 获取到一个浏览器的实例
HttpClient client = new DefaultHttpClient();
//2. 准备请求的地址
String param1 = URLEncoder.encode(name);
String param2 = URLEncoder.encode(password);
HttpGet httpGet = new HttpGet(path + "?name=" + param1 + "&password=" + param2);
HttpResponse ressponse = client.execute(httpGet);
int code = ressponse.getStatusLine().getStatusCode();
if(code == 200){
InputStream is =ressponse.getEntity().getContent();
byte[] result = StreamTool.getBytes(is);
return new String(result);
}
else{
throw new IllegalStateException("服务器状态异常");
}
}
public static String sendDataByHttpClientPost(String path , String name,String password) throws Exception{
//1. 获取到一个浏览器的实例
HttpClient client = new DefaultHttpClient();
//2. 准备要请求的 数据类型
HttpPost httppost = new HttpPost(path);
// 键值对
List< NameValuePair> parameters = new ArrayList
();
parameters.add(new BasicNameValuePair("name", name));
parameters.add(new BasicNameValuePair("password", password));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8");
//3.设置post请求的数据实体
httppost.setEntity(entity);
//4. 发送数据给服务器
HttpResponse ressponse = client.execute(httppost);
int code = ressponse.getStatusLine().getStatusCode();
if(code == 200){
InputStream is =ressponse.getEntity().getContent();
byte[] result = StreamTool.getBytes(is);
return new String(result);
}
else{
throw new IllegalStateException("服务器状态异常");
}
}
/**
* 提交数据给服务器 带一个文件
* @param path
* @param name
* @param password
* @param filepath 文件在手机上的路径
*
* @return
* @throws Exception
*/
public static String sendDataByHttpClientPost(String path , String name,String password ,String filepath) throws Exception{
// 实例化上传数据的 数组 part []
Part[] parts = {new StringPart("name", name),
new StringPart("password", password),
new FilePart("file", new File(filepath))};
PostMethod filePost = new PostMethod(path);
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
client.getHttpConnectionManager().getParams()
.setConnectionTimeout(5000);
int status = client.executeMethod(filePost);
if(status==200){
System.out.println( filePost.getResponseCharSet());
String result = new String(filePost.getResponseBodyAsString());
String ha = new String ( result.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(ha);
System.out.println("--"+result);
return result;
}
else{
throw new IllegalStateException("服务器状态异常");
}
}
}