public class MainActivity extends Activity {
List<New> list = new ArrayList<New>();
private ListView lv;
private ImageView img;
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
img.setImageBitmap((Bitmap) msg.obj);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
}
// httpclient方式请求
public void httpclientbtn(View v) {
MyTask2 myTask2 = new MyTask2();
myTask2.execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");
}
// httpurlcontent方式请求
public void httpurlcontentbtn(View v) {
MyTask1 myTask1 = new MyTask1();
myTask1.execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");
}
// 异步加载2
class MyTask2 extends AsyncTask<String, Void, String> {
private ProgressDialog pd2;
private String content;
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
SSLSocketFactory.getSocketFactory().setHostnameVerifier(
new AllowAllHostnameVerifier());
// 1.创建出一个httpclient
HttpClient hc = new DefaultHttpClient();
// 2.创建httpget对象
HttpGet httpGet = new HttpGet(params[0]);
// 3.执行请求
try {
// 执行请求
HttpResponse response = hc.execute(httpGet);
// 得到结果码,并判断
int code = response.getStatusLine().getStatusCode();
if (code == 200) {
// 5.得到结果数据
HttpEntity entity = response.getEntity();
content = EntityUtils.toString(entity);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return content;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
list.clear();
if (pd2 != null && pd2.isShowing()) {
pd2.dismiss();
}
Gson gson = new Gson();
Bean bean = gson.fromJson(result, Bean.class);
List<New> newslist = bean.getNewslist();
for (New new1 : newslist) {
String ctime = new1.getCtime();
String description = new1.getDescription();
String picUrl = new1.getPicUrl();
String title = new1.getTitle();
String url = new1.getUrl();
list.add(new New(ctime, description, picUrl, title, url));
}
Log.i("bbb", list.toString());
Myadapter myadapter = new Myadapter();
lv.setAdapter(myadapter);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd2 = new ProgressDialog(MainActivity.this);
pd2.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd2.setMessage("正在请求,请等待。。。");
pd2.show();
}
}
// 异步加载1
class MyTask1 extends AsyncTask<String, Void, String> {
private String streamtoString = "";
private ProgressDialog pd;
// 请求网络的代码
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
URL url = new URL(params[0]);
try {
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
openConnection.setRequestMethod("GET");
openConnection.setReadTimeout(3000);
openConnection.setConnectTimeout(3000);
int responseCode = openConnection.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = openConnection
.getInputStream();
streamtoString = StreamtoString(inputStream);
Log.i("zzz", streamtoString);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return streamtoString;
}
// 在执行操作之前
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd = new ProgressDialog(MainActivity.this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("正在请求,请等待。。。");
pd.show();
}
// 在执行操作之后
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
list.clear();
if (pd != null && pd.isShowing()) {
pd.dismiss();
}
Gson gson = new Gson();
Bean bean = gson.fromJson(streamtoString, Bean.class);
List<New> newslist = bean.getNewslist();
for (New new1 : newslist) {
String ctime = new1.getCtime();
String description = new1.getDescription();
String picUrl = new1.getPicUrl();
String title = new1.getTitle();
String url = new1.getUrl();
list.add(new New(ctime, description, picUrl, title, url));
}
Myadapter myadapter = new Myadapter();
lv.setAdapter(myadapter);
}
}
// 将流转换成String
private String StreamtoString(InputStream inputStream) {
// TODO Auto-generated method stub
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream));
String con;
StringBuilder builder = new StringBuilder();
try {
while ((con = reader.readLine()) != null) {
builder.append(con);
}
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return builder.toString();
}
// 适配数据
class Myadapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
View view = View.inflate(MainActivity.this, R.layout.item_list,
null);
img = (ImageView) view.findViewById(R.id.img);
TextView little = (TextView) view.findViewById(R.id.little);
TextView time = (TextView) view.findViewById(R.id.time);
new Thread() {
public void run() {
qingqiupic(list.get(position).getPicUrl());
};
}.start();
little.setText(list.get(position).getTitle());
time.setText(list.get(position).getCtime());
return view;
}
// 请求图片
private void qingqiupic(String picUrl) {
// TODO Auto-generated method stub
try {
URL url = new URL(picUrl);
try {
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
openConnection.setRequestMethod("GET");
openConnection.setReadTimeout(3000);
openConnection.setConnectTimeout(3000);
int responseCode = openConnection.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = openConnection
.getInputStream();
// Log.i("aaa", inputStream.toString());
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Message msg = Message.obtain();
msg.obj = bitmap;
handler.sendMessage(msg);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Httpclient和 Httpurlcontent网络请求
最新推荐文章于 2023-06-05 15:50:41 发布