首先一个工具类
package com.luo.utils; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.HttpClientParams; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.net.http.AndroidHttpClient; import android.util.Log; import android.widget.Toast; /**网络连接 * @author cnmobi-db * */ public class MyConnect { private static HttpParams httpParams; private static HttpClient httpClient; /**get方式请求 * @param url * @param params * @return */ public static String doGet(String url, Map<String, String> params) { /* 建立HTTPGet对象 */ String paramStr = ""; Set<Map.Entry<String, String>> set = params.entrySet(); for (Iterator<Map.Entry<String, String>> it = set.iterator(); it.hasNext();) { Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next(); System.out.println(entry.getKey() + "--->" + entry.getValue()); paramStr += paramStr = "&" + entry.getKey() + "=" + entry.getValue(); } if (!paramStr.equals("")) { paramStr = paramStr.replaceFirst("&", "?"); url += paramStr; } Log.d("strResult", url); HttpGet httpRequest = new HttpGet(url); String strResult = "doGetError"; try { /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { // strResult = "Error Response: " // + httpResponse.getStatusLine().toString(); strResult = "404"; } } catch (ClientProtocolException e) { // strResult = e.getMessage().toString(); strResult = "404"; e.printStackTrace(); } catch (IOException e) { // strResult = e.getMessage().toString(); strResult = "404"; e.printStackTrace(); } catch (Exception e) { // strResult = e.getMessage().toString(); strResult = "404"; e.printStackTrace(); } Log.d("strResult", strResult); return strResult; } /**post方式请求 * @param session * @param url * @param params * @return */ public static String doPost(String session,String url, List<NameValuePair> params) { String www = url +"?"; for(int i =0; i<params.size();i++) { if(i != params.size()-1) www = www + params.get(i).toString()+"&"; else www = www + params.get(i).toString(); } Log.d("strResult","url---> "+www); /* 建立HTTPPost对象 */ HttpPost httpRequest = new HttpPost(url); String strResult = "doPostError"; try { /* 添加请求参数到请求对象 */ httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); if(session != null) { httpRequest.setHeader("Cookie", session); System.out.println(session); } /* 发送请求并等待响应 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若状态码为200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 读返回数据 */ strResult = EntityUtils.toString(httpResponse.getEntity(),HTTP.UTF_8); } else { strResult = "404";// "Error Response: " + // httpResponse.getStatusLine().toString(); } } catch (UnsupportedEncodingException e) { strResult = "404";// e.getMessage().toString(); e.printStackTrace(); } catch (ClientProtocolException e) { strResult = "404";// e.getMessage().toString(); e.printStackTrace(); } catch (IOException e) { strResult = "404";// e.getMessage().toString(); e.printStackTrace(); } catch (Exception e) { strResult = "404";// e.getMessage().toString(); e.printStackTrace(); } Log.d("strResult", strResult); try { strResult = URLDecoder.decode(strResult, HTTP.UTF_8); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d("strResult", strResult); return strResult; } /**配置httpclient * @return */ public static HttpClient getHttpClient() { // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的) httpParams = new BasicHttpParams(); // 设置连接超时和 Socket 超时,以及 Socket 缓存大小 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSocketBufferSize(httpParams, 8192); // 设置重定向,缺省为 true HttpClientParams.setRedirecting(httpParams, true); // 设置 user agent String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6"; HttpProtocolParams.setUserAgent(httpParams, userAgent); // 创建一个 HttpClient 实例 httpClient = new DefaultHttpClient(httpParams); return httpClient; } /**获取网络连通状态 * @param context * @return */ public static boolean NetWorkStatus(Context context) { boolean netSataus = false; ConnectivityManager cwjManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); cwjManager.getActiveNetworkInfo(); if (cwjManager.getActiveNetworkInfo() != null) { netSataus = cwjManager.getActiveNetworkInfo().isAvailable(); } if(!netSataus) Toast.makeText(context, "网络错误!", Toast.LENGTH_SHORT).show(); return netSataus; } /**获取网络图片 * @param url * @return */ public static Bitmap loadImageFromInternet(String url) { Bitmap bitmap = null; HttpClient client = AndroidHttpClient.newInstance("Android"); HttpParams params = client.getParams(); HttpConnectionParams.setConnectionTimeout(params, 3000); HttpConnectionParams.setSocketBufferSize(params, 3000); HttpResponse response = null; InputStream inputStream = null; HttpGet httpGet = null; try { httpGet = new HttpGet(url); response = client.execute(httpGet); int stateCode = response.getStatusLine().getStatusCode(); if (stateCode != HttpStatus.SC_OK) { return bitmap; } HttpEntity entity = response.getEntity(); if (entity != null) { try { inputStream = entity.getContent(); return bitmap = BitmapFactory.decodeStream(inputStream); } finally { if (inputStream != null) { inputStream.close(); } entity.consumeContent(); } } } catch (ClientProtocolException e) { httpGet.abort(); e.printStackTrace(); } catch (IOException e) { httpGet.abort(); e.printStackTrace(); } finally { ((AndroidHttpClient) client).close(); } return bitmap; } }
然后创建一个异步任务内部类
class GethispetsAsyncTask extends AsyncTask<Object, Object, Object> { ProgressDialog dialog = ProgressDialog.show(HeActivity.this, null, "正在查询宠物信息,请稍后......"); private String url; private String token; private String uid; public GethispetsAsyncTask(String url, String token, String uid) { this.url = url; this.token = token; this.uid = uid; } @Override protected Object doInBackground(Object... params) { String code = "1"; MyConnect.getHttpClient(); Map<String, String> parms = new LinkedHashMap<String, String>(); parms.put("token", token); parms.put("uid", uid); String jsonContent = MyConnect.doGet(url, parms); try { JSONObject jsonObject = new JSONObject(jsonContent); if (jsonObject != null) { code = jsonObject.getString("code"); if (jsonObject.has("petArray")) { String j1 = jsonObject.getString("petArray"); JSONArray j2 = new JSONArray(j1); for (int i = 0; i < j2.length(); i++) { JSONObject jsonObject2 = j2.getJSONObject(i); String j3 = jsonObject2.getInt("weight") + " KG"; String j4 = jsonObject2.getString("nickname"); String j5 = jsonObject2.getString("birthday"); String j6 = jsonObject2.getString("breed"); HashMap<String, String> map = new HashMap<String, String>(); map.put("weight", j3); map.put("name", j4); map.put("bir", j5); map.put("kind", j6); hispetList.add(map); } } if (jsonObject.has("terminalArray")) { String ter = jsonObject.getString("terminalArray"); JSONArray termes = new JSONArray(ter); for (int i = 0; i < termes.length(); i++) { JSONObject jsonObject3 = termes.getJSONObject(i); String terid = jsonObject3.getString("terminalId"); String dist = jsonObject3.getString("dist"); HashMap<String, String> map1 = new HashMap<String, String>(); map1.put("terminalId", terid); map1.put("dist", dist); histerList.add(map1); } } } } catch (JSONException e) { e.printStackTrace(); } return code; } @Override protected void onPostExecute(Object result) { super.onPostExecute(result); System.out.println("-----result------>" + result); dialog.dismiss(); if (result.equals("0")) { hispetapter = new SimpleAdapter(HeActivity.this, hispetList, R.layout.list_itemhispet, new String[] { "weight", "bir", "kind", "name" }, new int[] { R.id.weight, R.id.bir, R.id.kind, R.id.name }); listView.setAdapter(hispetapter); histerapter = new SimpleAdapter(HeActivity.this, histerList, R.layout.list_itemhister, new String[] { "terminalId", "dist" }, new int[] { R.id.ter, R.id.dist }); listView2.setAdapter(histerapter); } else if (result.equals("40008")) { Toast.makeText(HeActivity.this, "身份信息过期,请重新登录", Toast.LENGTH_SHORT).show(); } else { } } }
最后启动异步任务
new GethispetsAsyncTask(ConstantUtils.host1 + ConstantUtils.url_26, ConstantUtils.token, uid + "").execute(null, null, null);
原文:http://luoguoxin.blog.51cto.com/8845916/1620108