HttpURLConnection网络请求方式:
以下摘自一个ListView展示数据的Demo
判断请求方式—— 一个封装好的工具类
public class MyTask extends AsyncTask<String,Void,String> {
//申请一个接口类对象
private Icallbacks icallbacks;
//将无参构造设置成私有的,使之在外部不能够调用
private MyTask() {
}
//定义有参构造方法
public MyTask(Icallbacks icallbacks) {
this.icallbacks = icallbacks;
}
@Override
protected String doInBackground(String... params) {
String str="";
//得到请求的类型
String type = params[1];
if ("1".equals(type)) {//如果是"1" 执行 HttpGet请求
//获取httpclient对象
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
//准备一个get请求
// HttpGet httpGet = new HttpGet(jsonUrl);
HttpPost httpPost = new HttpPost(params[0]);
try {
//得到服务器返回的数据;
HttpResponse response = defaultHttpClient.execute(httpPost);
//得到状态码
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode ==200){
//entiry 里面封装的数据;
HttpEntity entity = response.getEntity();
str = EntityUtils.toString(entity);
}
} catch (IOException e) {
e.printStackTrace();
}
} else if ("2".equals(type)) {//如果是2执行 HttpUrlConnection请求
try {
//1.创建Url对象
URL url = new URL(params[0]);
//2.打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//3.设置
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
//4.得到响应码,进行判断
int code = connection.getResponseCode();
if (code == 200) {
//5.得到结果
InputStream inputStream = connection.getInputStream();
//调用工具类中的静态方法
str=StreamToString.streamTostr(inputStream,"utf-8");
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
}
return str;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//解析,封装到bean,更新UI组件
icallbacks.updataUiByjson(s);
}
//定义一个接口
public interface Icallbacks{
//根据回传的json字符串,解析并更新页面组件
void updataUiByjson(String jsonstr);
}
}
以下实际应用代码————
public class Shouye extends Fragment {
private List<Result.NewslistBean> list;
private ListView lv;
private MyAdapterss myAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container
, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.s_f1, null);
//获取控件
lv=(ListView)view.findViewById(R.id.lv);
//异步请求数据
MyTask myTask = new MyTask(new MyTask.Icallbacks() {
@Override
public void updataUiByjson(String jsonstr) {
//创建Gson
Gson gson = new Gson();
Result result = gson.fromJson(jsonstr, Result.class);
//得到集合
list = result.getNewslist();
//设置适配器
setAdapter();
}
});
myTask.execute(new String[]{"https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10", "2"});
return view;
}
private void setAdapter() {
if(myAdapter==null){
//设置适配器
myAdapter = new MyAdapterss();
lv.setAdapter(myAdapter);
}else{
myAdapter.notifyDataSetChanged();
}
}
class MyAdapterss extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if (convertView==null){
vh = new ViewHolder();
convertView=View.inflate(getActivity(), R.layout.item_layout,null);
vh.img=(ImageView)convertView.findViewById(R.id.image_view);
vh.tv=(TextView)convertView.findViewById(R.id.text_title);
convertView.setTag(vh);
}else{
vh= (ViewHolder) convertView.getTag();
}
//设置
vh.tv.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(),vh.img, ImageloaderUtil.getImageOptions());
return convertView;
}
class ViewHolder{
private ImageView img;
private TextView tv;
}
}
}
HttpClient网络请求
public class Fxain extends Fragment {
private ListView lv;
private List<Result.NewslistBean> list;
private MyAdapterss myAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.s_f1, null);
//获取控件
lv=(ListView)view.findViewById(R.id.lv);
//异步请求数据
MyTask myTask = new MyTask(new MyTask.Icallbacks() {
@Override
public void updataUiByjson(String jsonstr) {
//创建Gson
Gson gson = new Gson();
Result result = gson.fromJson(jsonstr, Result.class);
//得到集合
list = result.getNewslist();
//设置适配器
setAdapter();
}
});
myTask.execute(new String[]{"http://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10", "1"});
return view;
}
private void setAdapter() {
if(myAdapter==null){
//设置适配器
myAdapter = new MyAdapterss();
lv.setAdapter(myAdapter);
}else{
myAdapter.notifyDataSetChanged();
}
}
class MyAdapterss extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh;
if (convertView==null){
vh = new ViewHolder();
convertView=View.inflate(getActivity(), R.layout.item_layout,null);
vh.img=(ImageView)convertView.findViewById(R.id.image_view);
vh.tv=(TextView)convertView.findViewById(R.id.text_title);
convertView.setTag(vh);
}else{
vh= (ViewHolder) convertView.getTag();
}
//设置
vh.tv.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getPicUrl(),vh.img, ImageloaderUtil.getImageOptions());
return convertView;
}
class ViewHolder{
private ImageView img;
private TextView tv;
}
}
}