网络请求处理与数据处理返回对象

本文详细介绍了网络请求工具类的功能,包括判断网络是否可用、GET请求和POST请求,并提供了网络参数对象的使用示例。同时,阐述了GET和POST请求的具体实现过程,包括参数构建、URL构造和响应处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一个网络请求工具类:


package com.android.whether.tools;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
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.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;

import com.android.whether.R;
import com.android.whether.entity.RequestVo;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import android.widget.Toast;

	/**
	 * 网络工具类:
	 * 1.判断网络是否可用;
	 * 2.get请求;
	 * 3.post请求;
	 *
	 */
	public class NetUtil {
		private static BasicHeader[] headers = new BasicHeader[10];
		static {
			headers[0] = new BasicHeader("Appkey", "");
			headers[1] = new BasicHeader("Udid", "");
			headers[2] = new BasicHeader("Os", "");
			headers[3] = new BasicHeader("Osversion", "");
			headers[4] = new BasicHeader("Appversion", "");
			headers[5] = new BasicHeader("Sourceid", "");
			headers[6] = new BasicHeader("Ver", "");
			headers[7] = new BasicHeader("Userid", "");
			headers[8] = new BasicHeader("Usersession", "");
			headers[9] = new BasicHeader("Unique", "");
		}
	
		   
		public static boolean hasNetwork(Context context){
			ConnectivityManager con = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
			NetworkInfo workinfo = con.getActiveNetworkInfo();
			if(workinfo == null || !workinfo.isAvailable())
			{
				Toast.makeText(context, R.string.net_error, Toast.LENGTH_SHORT).show();
				return false;
			}
			return true;
		}

		/**
		    * get请求
		    * @param RequestVo 网络请求参数对象
		    * @return object 数据返回object
		    */
     public static Object get(RequestVo vo){
			DefaultHttpClient client = new DefaultHttpClient();
			String paramString = null ;
			if(vo.requestDataMap!=null){
				StringBuffer params = new StringBuffer() ; 
				params.append("?") ;
				HashMap<String,String> map = vo.requestDataMap;
				for(Map.Entry<String,String> entry:map.entrySet()){
					params.append(entry.getKey()) ;
					params.append("=") ;
					params.append(entry.getValue()) ;
					params.append("&") ;
				}
				paramString = params.substring(0, params.lastIndexOf("&")) ; 
			}
			String getUrl = paramString == null ? vo.context.getString(R.string.app_host).concat(vo.requestUrl):
				vo.context.getString(R.string.app_host).concat(vo.requestUrl).concat(paramString) ;
			HttpGet get = new HttpGet(getUrl);
			get.setHeaders(headers);
			Object obj = null;
			try {
				HttpResponse response = client.execute(get);
				if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
					String result = EntityUtils.toString(response.getEntity(),"UTF-8");
					Log.e(NetUtil.class.getSimpleName(), result);
					obj = getObjectByResult(result) ;
					return obj;
				}
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
		/**
		    * post请求:通过RequestVo对象,可以获取到请求相关信息,并设置成HTTP协议的请求属性,并请求数据
		    * @param RequestVo 网络请求参数对象
		    * @return object 返回  数据返回的object
		    */
		public static Object post(RequestVo vo){
			DefaultHttpClient client = new DefaultHttpClient();
			Log.e("URL:", vo.context.getString(R.string.app_host).concat(vo.requestUrl));
			HttpParams params = new BasicHttpParams();// 
			
			//设置Conextion超时时间和Socket超时时间;
			HttpConnectionParams.setConnectionTimeout(params, 8000);   //连接超时
			HttpConnectionParams.setSoTimeout(params, 5000);   //响应超时
		   
			//拿到app_host,并追加requestUrl,组成请求对象HttpPost;
			HttpPost post = new HttpPost(vo.context.getString(R.string.app_host).concat(vo.requestUrl));
			//给HttpPost设置BasicHttpParams,和BasicHeader[];
			post.setParams(params);
			//post.setHeaders(headers);
		
			//准备一个Object对象引用;
			Object obj = null;
		
			try {
				/**
				 * 如果请求数据映射requestDataMap不为null,就从中获取条目Map.Entry,
				 * 并生成基本名值对BasicNameValueParir,并添加到数组集合中,以便创建HttpEntity;
				 */
				if(vo.requestDataMap!=null){
					HashMap<String,String> map = vo.requestDataMap;
					ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
					for(Map.Entry<String,String> entry:map.entrySet()){
						BasicNameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue());
						pairList.add(pair);
					}
					//把BasicNameValuePair数组集合,以"UTF-8"编码,编码成Url HttpEntity;
					HttpEntity entity = new UrlEncodedFormEntity(pairList,"UTF-8");
					post.setEntity(entity);
					//StringEntity
				}
				//让DefaultHttpClient执行HttpPost,完成请求post;
				HttpResponse response = client.execute(post);//包含响应的状态和返回的结果==
				if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
					String result = EntityUtils.toString(response.getEntity(),"UTF-8");
					Log.e(NetUtil.class.getSimpleName(), result);
					obj = getObjectByResult(result) ;
					return obj;
				}
			} catch (ClientProtocolException e) {
				Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e);
			} catch (IOException e) {
				Log.e(NetUtil.class.getSimpleName(), e.getLocalizedMessage(),e);
			}
			return null;
		}
	
		private static Object getObjectByResult(String result){
			return FileUtils.weatherInfoXmlPullParser(result) ; 
		}
	}


网络参数对象类


package com.android.whether.entity;

import java.util.HashMap;

import android.content.Context;

public class RequestVo {
	public Context context ;
	public String requestUrl ;
	public HashMap<String,String> requestDataMap ;
	
	public RequestVo() {
		super();
	}
	
	public RequestVo(Context context, String requestUrl,
			HashMap<String, String> requestDataMap) {
		super();
		this.context = context;
		this.requestUrl = requestUrl;
		this.requestDataMap = requestDataMap;
	}		
}

文件操作工具类


public class FileUtils {
    public static WeatherInfo weatherInfoXmlPullParser(String buffer){  
        
        XmlPullParser xmlParser = Xml.newPullParser();//获得XmlPullParser解析器     
          
        ByteArrayInputStream tInputStringStream = null;  
        if (buffer != null && !buffer.trim().equals("")){  
           tInputStringStream = new ByteArrayInputStream(buffer.getBytes()); 
        }else {  
            return null;  
        }        
        try{  
            //得到文件流,并设置编码方式  
            //InputStream inputStream=mContext.getResources().getAssets().open(fileName);  
            //xmlParser.setInput(inputStream, "utf-8");  
            xmlParser.setInput(tInputStringStream, "UTF-8");                
            return parseXmlStream(xmlParser);  //通过xmlParser解析返回的xml文件得到对象
        } catch (XmlPullParserException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
        } catch (IOException e1) {  
             // TODO Auto-generated catch block  
             e1.printStackTrace();  
        }   
        return null ;
        }
 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值