• Android Http请求框架二:xUtils 框架网络请求


    一:对Http不了解的请看

    Android Http请求框架一:Get 和 Post 请求

    二、正文

    1、xUtils 下载地址

        github 下载地址  : https://github.com/wyouflf/xUtils

    2、关于网络请求的方法

    package com.jike.shanglv.NetAndJson;
    
    import java.io.File;
    
    import com.lidroid.xutils.HttpUtils;
    import com.lidroid.xutils.exception.HttpException;
    import com.lidroid.xutils.http.RequestParams;
    import com.lidroid.xutils.http.ResponseInfo;
    import com.lidroid.xutils.http.ResponseStream;
    import com.lidroid.xutils.http.callback.RequestCallBack;
    import com.lidroid.xutils.http.client.HttpRequest;
    import com.lidroid.xutils.util.LogUtils;
    
    public class HttpUtil {
    
    	String result = "" ;
    
    	/**
    	 * Get请求  异步的
    	 * @param url  服务器地址
    	 * @param userkey 
    	 * @param str
    	 * @param sign 签名
    	 * @return
    	 */
    	public String xutilsGet( String url , String userkey , String str , String sign  ){
    		RequestParams params = new RequestParams();
    		params.addQueryStringParameter("userkey", userkey );
    		params.addQueryStringParameter("str", str );
    		params.addQueryStringParameter("sign", sign );
    		HttpUtils http = new HttpUtils();
    		http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间   10s
    		http.send(HttpRequest.HttpMethod.GET,
    				url ,
    				new RequestCallBack<String>(){
    			@Override
    			public void onLoading(long total, long current, boolean isUploading) {
    
    			}
    
    			@Override
    			public void onSuccess(ResponseInfo<String> responseInfo) {
    				result = responseInfo.result.toString() ;
    			}
    
    			@Override
    			public void onStart() {
    			}
    
    			@Override
    			public void onFailure(HttpException error, String msg) {
    			}
    		});
    
    		return result ;
    	}
    
    	/**
    	 * Post请求 异步的
    	 * @param url
    	 * @param userkey
    	 * @param str
    	 * @param sign
    	 * @return
    	 */
    	public String xutilsPost( String url , String userkey , String str , String sign ){
    		RequestParams params = new RequestParams();
    		params.addQueryStringParameter("userkey", userkey );
    		params.addQueryStringParameter("str", str );
    		params.addQueryStringParameter("sign", sign );
    
    		// 只包含字符串参数时默认使用BodyParamsEntity,
    		// 类似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。
    		//params.addBodyParameter("name", "value");
    
    		// 加入文件参数后默认使用MultipartEntity("multipart/form-data"),
    		// 如需"multipart/related",xUtils中提供的MultipartEntity支持设置subType为"related"。
    		// 使用params.setBodyEntity(httpEntity)可设置更多类型的HttpEntity(如:
    		// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。
    		// 例如发送json参数:params.setBodyEntity(new StringEntity(jsonStr,charset));
    
    		HttpUtils http = new HttpUtils();
    		http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间   10s  
    		http.send(HttpRequest.HttpMethod.POST ,
    				url ,
    				params,
    				new RequestCallBack<String>() {
    
    			@Override
    			public void onStart() {
    			}
    
    			@Override
    			public void onLoading(long total, long current, boolean isUploading) {
    			}
    
    			@Override
    			public void onSuccess(ResponseInfo<String> responseInfo) {
    				result = responseInfo.result.toString() ;
    			}
    
    			@Override
    			public void onFailure(HttpException error, String msg) {
    
    			}
    		});
    
    		return result ;
    	}
    
    	/**
    	 * 带上传文件的 Post请求   异步的
    	 * @param url
    	 * @param userkey
    	 * @param str
    	 * @param sign
    	 * @param picString  文件的地址
    	 * @return
    	 */
    	public String xutilsFilePost( String url , String userkey , String str , String sign , String picString ){
    		RequestParams params = new RequestParams();
    		params.addQueryStringParameter("userkey", userkey );
    		params.addQueryStringParameter("str", str );
    		params.addQueryStringParameter("sign", sign );
    
    		// 只包含字符串参数时默认使用BodyParamsEntity,
    		// 类似于UrlEncodedFormEntity("application/x-www-form-urlencoded")。
    		//params.addBodyParameter("name", "value");
    
    		// 加入文件参数后默认使用MultipartEntity("multipart/form-data"),
    		// 如需"multipart/related",xUtils中提供的MultipartEntity支持设置subType为"related"。
    		// 使用params.setBodyEntity(httpEntity)可设置更多类型的HttpEntity(如:
    		// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。
    		// 例如发送json参数:params.setBodyEntity(new StringEntity(jsonStr,charset));
    		params.addBodyParameter("picture", new File( picString )) ;
    
    		com.lidroid.xutils.HttpUtils http = new com.lidroid.xutils.HttpUtils();
    		http.send(HttpRequest.HttpMethod.POST ,
    				url ,
    				params,
    				new RequestCallBack<String>() {
    
    			@Override
    			public void onStart() {
    			}
    
    			@Override
    			public void onLoading(long total, long current, boolean isUploading) {
    			}
    
    			@Override
    			public void onSuccess(ResponseInfo<String> responseInfo) {
    				result = responseInfo.result.toString() ;
    			}
    
    			@Override
    			public void onFailure(HttpException error, String msg) {
    			}
    		});
    
    		return result ;
    	}
    
    	//-------------------以上的代码 是 异步请求的, 以下的代码是同步请求的-------------------------//
    /** * Get同步请求 必须在异步块儿中执行 * @param url * @param userkey * @param str * @param sign * @return */ private String xutilsGetSync(String url , String userkey , String str , String sign ) { RequestParams params = new RequestParams(); params.addQueryStringParameter("userkey", userkey ); params.addQueryStringParameter("str", str ); params.addQueryStringParameter("sign", sign ); HttpUtils http = new HttpUtils() ; http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间 try { ResponseStream responseStream = http.sendSync(HttpRequest.HttpMethod.GET, url , params ) ; //int statusCode = responseStream.getStatusCode(); //Header[] headers = responseStream.getBaseResponse().getAllHeaders(); return responseStream.readString(); } catch (Exception e) { LogUtils.e(e.getMessage(), e); } return null; } /** * Post同步请求 必须在异步块儿中执行 * @param url * @param userkey * @param str * @param sign * @return */ private String xutilsPostSync(String url , String userkey , String str , String sign ) { RequestParams params = new RequestParams(); params.addQueryStringParameter("userkey", userkey ); params.addQueryStringParameter("str", str ); params.addQueryStringParameter("sign", sign ); HttpUtils http = new HttpUtils() ; http.configCurrentHttpCacheExpiry(1000 * 10); //设置超时时间 try { ResponseStream responseStream = http.sendSync(HttpRequest.HttpMethod.POST , url , params ) ; //int statusCode = responseStream.getStatusCode(); //Header[] headers = responseStream.getBaseResponse().getAllHeaders(); return responseStream.readString(); } catch (Exception e) { LogUtils.e(e.getMessage(), e); } return null; } }
  • 相关阅读:
    【杭电】[1302]The Snail
    【Light】[1297]Largest Box
    ubuntu10.04安装putty以保存SSH会话
    印象笔记导入为知笔记方法
    HTTP返回状态码及错误大全
    Ubuntu14.04安装wineqq国际版
    Ubuntu Unity 桌面快捷键切换窗口技巧
    Ubuntu14.04下安装为知笔记
    在ubuntu中如何管理startup application
    Error:" Can't locate Term/ReadKey.pm in @INC" 的解决方法
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/4477089.html
Copyright © 2020-2023  润新知