简单封装HttpUrlConnection异步请求
16lz
2021-01-26
package com.zwk.ezandroid.common;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.util.Log;import com.zwk.ezandroid.App;import com.zwk.ezandroid.common.util.L;import com.zwk.ezandroid.common.util.T;import com.zwk.ezandroid.common.widget.WKDialog;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.Map;public class WKHttp { Handler handler; public static void post( String url, Map requestBody, WKHttpCallback call){ http_Async(url,"POST",requestBody,null,call); } public static void get( String url, Map requestBody,WKHttpCallback call){ http_Async(url,"GET",requestBody,null,call); } public static void post( String url, Map requestBody, Map requestHeader, WKHttpCallback call){ http_Async(url,"POST",requestBody,requestHeader,call); } public static void get( String url, Map requestBody, Map requestHeader, WKHttpCallback call){ http_Async(url,"GET",requestBody,requestHeader,call); } public static void http_Async(final String url,final String httpMethod,final Map requestBody,final Map requestHeader,final WKHttpCallback call){ final WKHttp http = new WKHttp(); final Handler handler = http.getHandler(call); new Thread(new Runnable() { @Override public void run() { http.http_Sync(url,httpMethod,requestBody,requestHeader,handler); } }).start(); } public void http_Sync(String url,String httpMethod,Map param,Map requestHeader,Handler handler) { HttpURLConnection httpConnection = null; StringBuilder builder=new StringBuilder(); try { StringBuilder params=new StringBuilder(); for(Map.Entry entry:param.entrySet()){ params.append(entry.getKey()); params.append("="); params.append(entry.getValue().toString()); params.append("&"); } if(params.length()>0){ params.deleteCharAt(params.lastIndexOf("&")); } URL restServiceURL = new URL(url+(params.length()>0 ? "?"+params.toString() : "")); Log.e("zwk",restServiceURL.toString()); httpConnection = (HttpURLConnection) restServiceURL.openConnection(); httpConnection.setRequestMethod(httpMethod); httpConnection.setRequestProperty("Content-type", "application/json"); if(null!=requestHeader){ for(Map.Entry entry:requestHeader.entrySet()){ httpConnection.setRequestProperty(entry.getKey(),entry.getValue()); } } if (httpConnection.getResponseCode() != HttpURLConnection.HTTP_OK) { Message errMsg = Message.obtain(); errMsg.what = 1; errMsg.obj=httpConnection.getResponseCode(); handler.sendMessage(errMsg); }else{ InputStream inStrm = httpConnection.getInputStream(); byte []b=new byte[2048]; int length=-1; while((length=inStrm.read(b))!=-1){ builder.append(new String(b,0,length)); } L.e("--------------------"); L.e(builder.toString()); Message msg = Message.obtain(); msg.what = 0; msg.obj=builder.toString(); handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } finally { if (httpConnection != null) { httpConnection.disconnect(); } } } private Handler getHandler(final WKHttpCallback call){ if(null==handler){ handler = new Handler(Looper.getMainLooper()){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String resultJson=msg.obj+""; if(msg.what==0){ call.OnCall(resultJson); }else{ WKDialog.showProgressDialog(false,SFAApplication.getRootContext(),"正在发送验证码.."); T.toast("服务器错误,code="+resultJson); } } }; } return handler; } public interface WKHttpCallback{ void OnCall(String jsonStr); }}
更多相关文章
- Android(安卓)支付宝相关问题
- Android实现订单倒计时功能
- 关于Listview的一个没有notifyDataSetChanged导致的错误
- 简单实现android短信发送器
- 介绍 Android(安卓)DropBoxManager Service
- Android练习之Intent发邮件ACTION_SEND
- android studio网络图片浏览器
- android 蓝牙发送数据
- android支付宝 KeyFactory PrivateKey