安卓接口请求实例

首先一个工具类

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);
时间: 2024-11-08 06:55:34

安卓接口请求实例的相关文章

基站云接口开发实例(PHP调用基站数据接口)

基站云平台接口调用实例,采用CURL快速访问基站云平台的基站数据接口,获取基站数据,并通过JSON解析成数组数据. <?php /* 基站云接口调用实例 QQ:742631333 */ header("Content-type:text/html;charset=utf-8"); //UTF8编码 $apikey=""; //设置APIKEY $mnc=0; //0移动 1联通 $lac=2; //大区号 $cell=2; //小区号 $apiurl=&quo

Mock.JS拦截HTTP请求实例解析-JS笔记

MockJS是一种比较通用的前端模拟HTTP请求及回复的工具,能够仿真处各类HTTP的请求及返回结果.实现在无后端的情况下,前端对于后端接口的仿真.Mock的基础使用也是比较简单,本文我们主要和大家分享Mock.JS拦截HTTP请求实例解析,希望能帮助到大家. 但,在引入MockJS时,import Mock from 'mockjs'会拦截所有前端发出的HTTP请求,无论是否使用Mock.mock开启Mock仿真,都会拦截HTTP请求. 这也就是为何,就算不Mock.mock也会后端无法获取前

HttpClient发送get,post接口请求

HttpClient发送get post接口请求 /** * post * @param url POST地址 * @param data POST数据NameValuePair[] * @return 响应的参数 */ public static String post(String url,NameValuePair[] data){---------------get里面没有data只有url String response = ""; HttpClient httpClient

转载:Java的接口及实例

转自:http://blog.csdn.net/liujun13579/article/details/7736116/ 一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口定义的一般形式为: [访问控制符]interface <接口名> { 类型标识符final 符号常量名n = 常数: 返回值类型  方法名([参数列表]); -

支付宝手机网页即时到账接口(2)之授权接口请求

前言 这篇文章主要讲诉系统调用支付宝手机网页即时到账授权接口获取支付宝返回的request_token. 上篇文章地址:支付宝手机网页即时到账接口(1)之相关信息介绍. 这是上篇文章结尾调用授权接口的图解. 官方文档中对授权接口的说明是: 商户利用编程方法来模拟http请求远程解析html,获取支付宝返回的结果数据后,可以结合自身网站的业务逻辑进行数据处理. 说明中不难看出我们的代码中需要模拟http提交参数,然后解析支付宝返回的结果再进行处理.该项目是用java编写的,所以后续代码也是用jav

Jsonp 跨域请求实例

关于jsonp的一个实例,其实自己也不是很了解,今天下午稍微研究了一下: 简单来说,jsonp就是为了两个不同网站之间数据传递而产生的,主要用于js脚本,因为浏览器本身是禁止跨域访问的: 本机实例: http://127.0.0.1:80/index.php <script src="http://cdn.staticfile.org/jquery/1.11.1/jquery.min.js"></script> <script type="tex

安卓网络请求图片到图片的三级缓存技术(内存缓存,本地缓存,网络缓存)

安卓网络请求图片,对于我们来说并不陌生,因为每个应用都有可能会用到这一技术.通常情况下,我们第一次都是从网络上请求图片资源,然后将 图片资源保存到内存和本地,下一次动态显示图片的时候就不需要再从网络上请求图片资源了,直接从本地或者内存中获取就可以了.这就涉及到图片 的三级缓存技术,分别是内存缓存,本地缓存,网络缓存. 缓存的流程图: 首先我们定义一个类叫ClassLoader: package com.jsako.showprodinfodemo; import java.io.FileOutp

jQuery Ajax: $.post请求实例

jQuery Ajax: $.post请求实例 leyangjun.html页面 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="./jquery-2.0.0.min.js"></scri

OpenNebula Restfull 接口请求示例

Fri Jun 20 07:28:20 2014 [I]: 10.0.2.2 - - [20/Jun/2014 07:28:20] "POST /vmtemplate HTTP/1.1" 201 815 0.7095Fri Jun 20 07:28:59 2014 [I]: 10.0.2.2 - - [20/Jun/2014 07:28:59] "GET /vmtemplate/0 HTTP/1.1" 200 936 0.0734Fri Jun 20 07:29:0