您的位置:首页 > 理论基础 > 计算机网络

两种方式综合请求网络数据

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 "";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: