温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

安卓接口请求实例

发布时间:2020-08-08 19:38:39 来源:网络 阅读:536 作者:海大易小晨 栏目:移动开发

首先一个工具类

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);


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI