两种方式综合请求网络数据
2017-12-03 20:38
323 查看
public class MainActivity extends AppCompatActivity { String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=50&startNum=2"; /*String refeshType ; String aa [] = {baseUrl,refeshType};*/ private Button btn_httpclient; private Button btn_httpurlconnection; private ListView lv; List<JavaBean.DataBean> list = new ArrayList<>(); List<JavaBean2.DataBean.PcFeedFocusBean> list2 = new ArrayList<>(); private MyAdapter adapter; /*private HttpClient httpClient; private HttpURLConnection httpURLConnection;*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_httpclient = findViewById(R.id.btn_httpclient); btn_httpurlconnection = findViewById(R.id.btn_httpurlconnection); lv = findViewById(R.id.lv); btn_httpclient.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(!baseUrl.equals("")){ new MyAsync( new MyAsync.ICallBacks() { @Override public void updateUiByJson(String jsonStr) { Log.d("tag",jsonStr); Gson gson=new Gson(); JavaBean2 javaBean2 = gson.fromJson(jsonStr, JavaBean2.class); List<JavaBean2.DataBean.PcFeedFocusBean> data = javaBean2.getData().getPc_feed_focus(); //得到要显示的数据 list2.addAll(data); //设置适配器 setAdapter(); } } ).execute(new String[]{"http://www.toutiao.com/api/pc/focus/","0"}); } } }); btn_httpurlconnection.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(!baseUrl.equals("")){ new MyAsync( new MyAsync.ICallBacks() { @Override public void updateUiByJson(String jsonStr) { Log.d("tag",jsonStr); Gson gson=new Gson(); JavaBean javaBean = gson.fromJson(jsonStr, JavaBean.class); List<JavaBean.DataBean> data = javaBean.getData(); //得到要显示的数据 list.addAll(data); //设置适配器 setAdapter(); } } ).execute(new String[]{baseUrl,"1"}); } } }); setAdapter(); } /** * 设置适配器 */ public void setAdapter(){ if(adapter==null){ adapter = new MyAdapter(list, this); lv.setAdapter(adapter); }else{ adapter.notifyDataSetChanged(); } }}
public class MyAsync extends AsyncTask<String,Void,String> {
//申请一个接口类对象
private ICallBacks iCallBacks;
//定义有参方法
public MyAsync(ICallBacks iCallBacks) {
this.iCallBacks = iCallBacks;
}
@Override
protected String doInBackground(String... strings) {
if("0".equals(strings[1])){
return NetUtils.getJsonByHttpClient(strings[0]);
}else
if("1".equals(strings[1])){
return NetUtils.getNetJson(strings[0]);
}
return "";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//解析,封装到bean,更新ui组件
iCallBacks.updateUiByJson(s);
}
public interface ICallBacks{
void updateUiByJson(String baseUrl);
}
}
public class MyAdapter extends BaseAdapter {
private List<JavaBean.DataBean> list ;
private Context context;
private HttpClient httpClient;
private HttpURLConnection httpURLConnection;
public MyAdapter(List<JavaBean.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
if(view==null){
view=View.inflate(context, R.layout.item,null);
holder=new ViewHolder();
holder.tvTitle= (TextView) view.findViewById(R.id.textView1);
holder.tvTime= (TextView) view.findViewById(R.id.textView2);
holder.img= (ImageView) view.findViewById(R.id.imageView);
view.setTag(holder);
}else{
holder=(ViewHolder) view.getTag();
}
holder.tvTitle.setText(list.get(i).getTITLE());
holder.tvTime.setText(list.get(i).getSHOWTIME());
if(list.get(i).getIMAGEURL()==null || list.get(i).getIMAGEURL().equals("")){
holder.img.setImageResource(R.mipmap.ic_launcher);
}else{
//imageLoader加载图片
ImageLoader.getInstance().displayImage(list.get(i).getIMAGEURL(),holder.img);
}
aeea
return view;
}
class ViewHolder{
TextView tvTitle;
TextView tvTime;
ImageView img;
}
}
public class NetUtils {
//获取网络文字——HttpClient
public static String getJsonByHttpClient (String urlStr){
DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(urlStr);
String json_str = "";
try {
//执行请求
HttpResponse execute = client.execute(get);
//得到结果码
int code = execute.getStatusLine().getStatusCode();
//响应成功
if(code == 200){
//得到相应结果的对象
HttpEntity entity = execute.getEntity();
json_str = EntityUtils.toString(entity);
}
} catch (IOException e) {
e.printStackTrace();
}
return json_str;
}
//获取网络文字——HttpUrlConnection
private static String tag = "getNetJson";
public static String getNetJson(String urlString) {
try {
//url对象封装接口字符串
URL url = new URL(urlString);
//用url打开连接, 返回值我们用HttpURLConnection
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(8000);//设置链接超时时间
int responseCode = urlConnection.getResponseCode(); //获取状态码
if (responseCode == 200) {
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
//可拼接的字符串
StringBuilder stringBuilder = new StringBuilder();
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
}
String jsonString = stringBuilder.toString();
return jsonString;
} else {
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e(tag, "getNetJson: " + e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.e(tag, "getNetJson: " + e.toString());
}
return "";
}
}
相关文章推荐
- iOS 网络请求数据两种请求方式GET,POST
- iOS 通过URL网络获取XML数据的两种方式
- 自定义dialog,加载数据或网络请求时 dialog+动画(两种样式分享)
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- 使用HttpURLConnection和使用HttpClient方式请求网络采用get方式和post方式请求数据
- Android网络编程之Http请求服务器数据(GET方式)
- Get方式请求网络数据+Fragment+SharedPreferences
- 网络请求方式(数据为聚合上的星座信息)
- Java网络请求(get/post)工具类实现的两种方式
- jq ajax 和js ajax 两种方式请求数据
- JSON数据与后台跨域交互时候网络请求的发送方式
- 网络数据请求方式(SOAP和JSON)
- volley两种网络请求方式
- iOS请求数据两种方式(GET、POST)
- Android网络编程之Http请求服务器数据(POST方式)
- 在线程中使用HttpClicent获取网络数据(get和post两种方式)
- 【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目
- Post方式请求网络数据
- Android_网络请求数据之HttpClient方式(核心代码)
- Android 网络中get与post两种提交数据的方式