标签:
废话不多说,直接上代码 比较实在。
其实这也是自己的一种记录方式,为以后的偷懒做准备。。。。不要打我,我就是一个懒人~
基于http协议的get方法发送参数:
/**
* 发送get请求
* @param path 请求路径
* @param params 请求参数
* @param encoding 编码
* @return 请求是否成功
*/
private static boolean sendGETRequest(String path,
Map<String, String> params, String coding) throws Exception{
//拼接url
StringBuilder url = new StringBuilder(path);
url.append("?");
for(Map.Entry<String, String> entry : params.entrySet()){
url.append(entry.getKey()).append("=");
url.append(URLEncoder.encode(entry.getValue(), coding));
url.append("&");
}
url.deleteCharAt(url.length() - 1);
//创建连接
HttpURLConnection conn = (HttpURLConnection)new URL(url.toString()).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
return true;
}
return false;
}
基于http协议的post方法发送参数:
/**
* 发送Post请求
* @param path 请求路径
* @param params 请求参数
* @param encoding 编码
* @return 请求是否成功
*/
private static boolean sendPOSTRequest(String path, Map<String, String> params, String encoding) throws Exception{
//封装成time=60&name=ceshishipin 这样的数据
StringBuilder data = new StringBuilder();
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry : params.entrySet()){
data.append(entry.getKey()).append("=");
data.append(URLEncoder.encode(entry.getValue(), encoding));
data.append("&");
}
data.deleteCharAt(data.length() - 1);
}
byte[] entity = data.toString().getBytes();//生成实体数据
HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("POST");
conn.setDoOutput(true);//允许对外输出数据
//设置请求的属性 Content-Type Content-Length这两个是必须的 等用到cooike 或者session的时候还要设置对应的属性
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
OutputStream outStream = conn.getOutputStream();
outStream.write(entity);
if(conn.getResponseCode() == 200){
return true;
}
return false;
}
发送数据的方法:(这里我只发送两个参数)
/**
* 发送数据
* @param name 参数一
* @param time 参数二
* @return 是否成功
* @throws Exception
*/
public static boolean send(String name, String time) throws Exception{
// TODO Auto-generated method stub
String url = "你请求的路径";
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("time", time);
try {
return sendHttpClientPOSTRequest(url, params, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Activity中的使用方式 还是使用线程更新UI
public void send(View v){
final String name = edit1.getText().toString();
final String time = edit2.getText().toString();
final Handler handler = new Handler(){
public void handleMessage(Message msg){
switch (msg.what) {
case 0:
Toast.makeText(getApplicationContext(), R.string.success, 1)
.show();
break;
case 1:
Toast.makeText(getApplicationContext(), R.string.error, 1)
.show();
break;
default:
break;
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
boolean result = VideoService.send(name,time);
if(result){
handler.sendEmptyMessage(0);
} else {
handler.sendEmptyMessage(1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
这里我没有使用按钮监听事件 直接在main.xml中这样配置的: android:onClick="send" //使用上面的send方法
看网上说有一个现成的框架(httpClient)可以用:
/**
* 通过HttpClient发送Post请求
* @param path 请求路径
* @param params 请求参数
* @param encoding 编码
* @return 请求是否成功
*/
private static boolean sendHttpClientPOSTRequest(String path, Map<String, String> params, String encoding) throws Exception{
List<NameValuePair> pairs = new ArrayList<NameValuePair>();//存放请求参数
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry : params.entrySet()){
pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs, encoding); //生成实体数据
HttpPost httpPost = new HttpPost(path);
httpPost.setEntity(entity);
DefaultHttpClient client = new DefaultHttpClient(); //模拟一个浏览器行为
HttpResponse response = client.execute(httpPost);
if(response.getStatusLine().getStatusCode() == 200){
return true;
}
return false;
}
通过HttpClient发送get请求 自己没有写,可以参看通过HttpClient发送Post请求。好了搞定,我就是懒人一个。以后直接从这里拿走copy改。 (*^__^*) 嘻嘻……
标签:
原文地址:http://my.oschina.net/zhengweishan/blog/374889