package com.example.com.test;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button button;
private TextView show;
private String str;
private ProgressDialog mypDialog;
private int count = 50;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
show = (TextView) findViewById(R.id.textView1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
DownLoadThread thread = new DownLoadThread();
thread.start();
}
});
mypDialog = new ProgressDialog(this);// 实例化
// 设置进度条风格,风格为长形进度条,STYLE_SPINNER为圆的
mypDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mypDialog.setTitle("登陆");// 设置ProgressDialog 标题
mypDialog.setMessage("正在验证请稍后...");// 设置ProgressDialog 提示信息
mypDialog.setIndeterminate(false);// 设置ProgressDialog
mypDialog.setCancelable(true);// 是否可以按退回按键取消
mypDialog.setMax(100);// 设置最大值
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:// 开始下载标志
show.setText("");
mypDialog.show();// 让ProgressDialog显示
break;
case 3:// 更新进度条
mypDialog.setProgress(count);
break;
case 2:// 结束下载标志
//mypDialog.cancel();
try {
JSONArray jsonArr=new JSONArray(strJson);
for(int i=0;i<jsonArr.length();i++)
{
JSONObject json=jsonArr.getJSONObject(i);
str= json.getString("firstname");
System.out.println("firstname:"+str);
str= json.getString("lastname");
System.out.println("lastname:"+str);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
show.setText(strJson);
break;
}
}
};
private class DownLoadThread extends Thread {
@Override
public void run() {
Message msg = new Message();
msg.what = 1;// 开始下载标志1
handler.sendMessage(msg);
HttpDownloader http = new HttpDownloader();
str = http.download("http://m.weather.com.cn/data/101010100.html");
// str =
// http.download("http://211.143.108.6/wap/ResCatService?act=pic&s=h");
msg = new Message();// 必须这样写,不然会报错。因为
msg.what = 2;
handler.sendMessage(msg);
}
}
public class HttpDownloader {
// 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文本当中的内容
// 1.创建一个URL对象
// 2.通过URL对象,创建一个HttpURLConnection对象
// 3.得到InputStream
// 4.从InputStream当中读取数据
private URL url;
private char[] buf = new char[100];
private InputStreamReader isr;
public String download(String urlStr) {
StringBuffer sb = new StringBuffer();
try {
url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url
.openConnection();
// buffer = new BufferedReader(new InputStreamReader(
// urlConn.getInputStream()));
isr = new InputStreamReader(urlConn.getInputStream());
int x = 0;
while ((x = isr.read(buf)) != -1) {
Log.i("msg", (count++) + "");
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
sb.append(new String(buf));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (isr != null) {
isr.close();
} else {
return "error";
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
}