Android 网络通信基类的实现
来源:互联网 发布:乐视电视转换网络电视 编辑:程序博客网 时间:2024/06/05 05:59
为了方便我们与服务器的通信,我们需要实现一个网络通信基类。
实现代码如下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import com.jikexueyuan.secret.Config;
import android.os.AsyncTask;
public class NetConnection {
/**
*
* @param url 通信地址
* @param method 通信方法 get post
* @param successCallback 通知调用者 成功
* @param failCallback 通知调用者 失败
* @param kvs 通信可变字符串参数
*/
public NetConnection(final String url,final HttpMethod method,final SuccessCallback successCallback,final FailCallback failCallback,final String ...kvs){
//网络链接会阻塞主线程,需要异步任务执行网络链接
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... arg0) {
StringBuffer paramsStr = new StringBuffer();
for (int i = 0; i < kvs.length; i+=2) {
paramsStr.append(kvs[i]).append("=").append(kvs[i+1]).append("&");
}
try {
URLConnection uc;
switch (method) {
case POST: //以post方式通信
uc = new URL(url).openConnection();
uc.setDoOutput(true);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(uc.getOutputStream(), Config.CHARSET));
bw.write(paramsStr.toString());
bw.flush();
break;
default: //以get方式通信
uc = new URL(url+"?"+paramsStr.toString()).openConnection();
break;
}
System.out.println("Request url:"+uc.getURL());
System.out.println("Request data:"+paramsStr);
BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream(), Config.CHARSET));
String line = null;
StringBuffer result = new StringBuffer();
while((line=br.readLine()) != null){
result.append(line);
}
System.out.println("Result" + result);
return result.toString();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//通知调用者
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(result != null){
if(successCallback != null){
successCallback.onSuccess(result);
}
}else{
if(failCallback != null){
failCallback.onFaid();
}
}
}
}.execute();
}
public static interface SuccessCallback{
void onSuccess(String result);
}
public static interface FailCallback{
void onFaid();
}
}
- Android 网络通信基类的实现
- Android网络通信的基本实现
- android的网络通信
- Android socket通信: 一问一答,一问多答客户端网络请求工具类的实现
- Android的网络与通信
- Android的网络与通信
- Android的网络与通信
- Android的网络与通信
- Android的网络与通信
- Android网络通信的方式
- Android的网络与通信
- Android的网络与通信
- Android的网络与通信
- Android的Http网络通信
- Android的网络与通信
- android的Tcp网络通信
- Socket通信:实现PC端和Android端之间的相互通信(通过网络)
- Android:使用HttpClient接口实现网络通信
- HDU 1518 Square
- [Leetcode] Generate Parentheses
- centos6.5下安装tomcat
- 即插即用的PC红外遥控接收器
- C语言qsort()函数
- Android 网络通信基类的实现
- string类c_str、data与\0使用
- ajax异步上传文件/图片
- POJ 1862 - Stripies(贪心)
- JDBC : 数据库的分页语句 && 调用函数和存储过程
- C++中const、volatile、mutable的用法
- lua 读写文件
- (lazarus)用BGRABitmap渲染前面的TAChart,让它更好看
- 安装hadoop2集群