安卓进行网络访问
网络请求代码
//传入需要请求的url返回请求到的json数据
public static String URLVisit(String url) {
URL u;
String str = null;
try {
u = new URL(url);
InputStream in = u.openStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
byte buf[] = new byte[1024];
int read = 0;
while ((read = in.read(buf)) > 0) {
out.write(buf, 0, read);
}
} finally {
if (in != null) {
in.close();
}
}
byte b[] = out.toByteArray();
str = new String(b, "UTF-8");
return str;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
定义一个button按钮创建点击事件重写方法
//进行网络访问
loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
uname = username.getText().toString();
pword = password.getText().toString();
new AsyncTask<String, Void, Void>() {
@Override
protected Void doInBackground(String... arg0) {
//arg0[0]代表的是下方填写的url
login(arg0[0]);
return null;
}
protected void onPostExecute(Void result) {
//请求结束会调用此方法可以根据自己的需求添加相应的代码
if(!tips){
//提示事件
Toast.makeText(LoginActivity.this, "密码错误", Toast.LENGTH_LONG).show();
}else{
DatasStatistics.setUname(uname);
DatasStatistics.setPassword(pword);
}
};
}.execute("http://调用的URL/Androiduse?uname="+uname+"&password="+pword+"");
}
});
login方法定义用于获取到传入的url后对数据进行的一些处理代码如下
// 加载账户密码的方法
private void login(String url) {
//这是一个定义页面跳转的方法
Intent i = new Intent(LoginActivity.this, MainActivity.class);
String str = URLVisit(url);
if(!str.equals("false")){
//gson是一个安卓转换json的一个类
Map<String,Object> fromJson = gson.fromJson(str, Map.class);
DatasStatistics.setMap((Map<String, Object>) fromJson.get("datasStatistics"));
DatasStatistics.setListMap((List<Map<String, Object>>) fromJson.get("longitudeLatitude"));
System.out.println(DatasStatistics.getListMap());
InsertUnamePassword();
tips = true;
//执行成功进行跳转
startActivity(i);
}
}