(个人经验,仅供参考,错误之处,敬请谅解)
网络访问
1、HttpURLConnection

class MyTask extends AsyncTask{
@Override
protected Object doInBackground(Object[] params) {
try {
String path="...";
path+="?type="+params[0]+"&number="+params[1];
URL url=new URL(path);
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); // 同理可以设置为POST
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.connect();
int code=conn.getResponseCode();
if(code==200){
InputStream in=conn.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String str=reader.readLine();
StringBuilder result=new StringBuilder();
while (str!=null){
result.append(str);
str=reader.readLine();
}
in.close();
conn.disconnect();
return result;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
... //对返回的数据进行处理
}
}
2、OkHttp


class MyTask extends AsyncTask{
@Override
protected Object doInBackground(Object[] params) {
String uripath="...";
OkHttpClient client=new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.SECONDS)
.readTimeout(5000,TimeUnit.SECONDS)
.build();
RequestBody body=new FormBody.Builder()
.add("type", String.valueOf(params[1]))
.add("number", String.valueOf(params[0]))
.build();
Request request=new Request.Builder()
.url(uripath)
.post(body)
.build();
try {
Response response=client.newCall(request).execute();
if(response.isSuccessful()){
String result=response.body().string();
return result;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
... //处理数据
}
}
数据解析
1、解析JSON数据
private String parseJson(Object o) {
List<Map<String,String>>data=new ArrayList<Map<String, String>>();
String result = o.toString();
try {
JSONObject jsonObject=new JSONObject(result);
int abc=jsonObject.getInt("status");
if(abc==0){
JSONObject result2=jsonObject.getJSONObject("result");
JSONArray list=result2.getJSONArray("list");
for(int i=0;i<list.length();i++){
JSONObject object= (JSONObject) list.get(i);
String status=object.getString("status");
String time=object.getString("time");
Map<String,String>map=new HashMap<String,String>();
map.put("status",status);
map.put("time",time);
data.add(map);
}
adapter=new SimpleAdapter(OkHttpAty.this,data,R.layout.list_item_layout,
new String[]{"status","time"},
new int[]{R.id.textView2,R.id.textView3});
listview.setAdapter(adapter);
return "ok";
}
else{
String msg=jsonObject.getString("msg");
return msg;
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
2、处理XML数据
private void parseXml(String result) {
try {
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
XmlPullParser parser=factory.newPullParser();
parser.setInput(new StringReader(result));
int event=parser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
if(event==XmlPullParser.START_TAG){
String node=parser.getName(); //获得当前标签的名字
Map<String,String>map=null;
map=new HashMap<String, String>();
if(node.equals("name")){
String name=parser.nextText();
map.put("name",name);
}
else if(node.equals("type")){
String type=parser.nextText();
map.put("type",type);
map.get("type");
data.add(map);
}
}
event=parser.next();
}
adapter=new SimpleAdapter(MyActivity.this,data,
android.R.layout.simple_spinner_dropdown_item,
new String[]{"type"},
new int[]{android.R.id.text1
});
sp.setAdapter(adapter);
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
1467

被折叠的 条评论
为什么被折叠?



