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

通过异步AsyncTask进行网络连接和Gson解析

2018-01-12 14:23 399 查看
当进行耗时操作时,一般用异步任务或开子线程的方式来完成,本文通过AsynvTask异步任务来进行

MainActivity代码

public class MainActivity extends AppCompatActivity {
private TextView tv;
String url="http://169.254.167.244:8080/Web_Data/GetPhones?pagesize=10&pageindex=1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... params) {
try {
URL url1=new URL(url);
HttpURLConnection huc=(HttpURLConnection)url1.openConnection();
huc.setConnectTimeout(3000);//设置请求超时时间
huc.setRequestMethod("GET");//设置请求方法
huc.connect();//去连接网络
//如果响应码返回是200就是请求成功
if(huc.getResponseCode()==200){
InputStream inputStream = huc.getInputStream();
byte[] b=new byte[1024];
int len=0;
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
StringBuilder sb=new StringBuilder();
while((len=inputStream.read(b))!=-1){
sb.append(new String(b,0,len));
outputStream.write(b,0,len);
}
byte[] img = outputStream.toByteArray();
Bitmap bitmap= BitmapFactory.decodeByteArray(img,0,img.length);
return bitmap;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("json","json:"+s);
Gson gson=new Gson();
Phone phone = gson.fromJson(s, Phone.class);
String brand = phone.getPhones().get(0).getBrand();
tv.setText(brand);
}
}.execute(url);
}
}要解析的Phone实体类,一般我们创建实体类是自动解析,通过Alt+Ins



选择gsonformat打开界面,把接口复制粘贴进去再OK,json就自动解析为实体类啦

public class Phone {

/**
* status : OK
* page : 10
* count : 1
* phones : [{"id":1,"price":8044.13,"brand":"三星","model":"V41"},{"id":2,"price":6925.13,"brand":"华为","model":"V31"},{"id":3,"price":201.63,"brand":"三星","model":"V51"},{"id":4,"price":4272.2,"brand":"魅族","model":"V31"},{"id":5,"price":7530.54,"brand":"中兴","model":"V51"},{"id":6,"price":6797,"brand":"魅族","model":"V31"},{"id":7,"price":8633.2,"brand":"三星","model":"V51"},{"id":8,"price":1833.06,"brand":"三星","model":"V01"},{"id":9,"price":2630.04,"brand":"小米","model":"V01"},{"id":10,"price":6300.96,"brand":"小米","model":"V31"}]
*/

private String status;
private int page;
private int count;
private List<PhonesBean> phones;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public int getPage() {
return page;
}

public void setPage(int page) {
this.page = page;
}

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}

public List<PhonesBean> getPhones() {
return phones;
}

public void setPhones(List<PhonesBean> phones) {
this.phones = phones;
}

public static class PhonesBean {
/**
* id : 1
* price : 8044.13
* brand : 三星
* model : V41
*/

private int id;
private double price;
private String brand;
private String model;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public String getBrand() {
return brand;
}

public void setBrand(String brand) {
this.brand = brand;
}

public String getModel() {
return model;
}

public void setModel(String model) {
this.model = model;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: