Android(安卓)封装http请求的工具类
16lz
2022-03-31
importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.URLEncoder;importjava.security.KeyStore;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;importorg.apache.http.HttpResponse;importorg.apache.http.HttpVersion;importorg.apache.http.client.HttpClient;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.conn.ClientConnectionManager;importorg.apache.http.conn.scheme.PlainSocketFactory;importorg.apache.http.conn.scheme.Scheme;importorg.apache.http.conn.scheme.SchemeRegistry;importorg.apache.http.conn.ssl.SSLSocketFactory;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.params.BasicHttpParams;importorg.apache.http.params.HttpParams;importorg.apache.http.params.HttpProtocolParams;importorg.apache.http.protocol.HTTP;importorg.apache.http.util.EntityUtils;importandroid.content.Context;importandroid.net.ConnectivityManager;/***网络工具类**@authormalinkang**/publicclassNetUtils{/***对网络连接状态进行判断**@returntrue,可用;false,不可用*/publicstaticbooleanisOpenNetwork(Contextcontext){ConnectivityManagerconnManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);if(connManager.getActiveNetworkInfo()!=null){returnconnManager.getActiveNetworkInfo().isAvailable();}returnfalse;}/***get请求**@paramurlString*@paramparams*@return*/publicstaticStringgetRequest(StringurlString,Map<String,String>params){try{StringBuilderurlBuilder=newStringBuilder();urlBuilder.append(urlString);if(null!=params){urlBuilder.append("?");Iterator<Entry<String,String>>iterator=params.entrySet().iterator();while(iterator.hasNext()){Entry<String,String>param=iterator.next();urlBuilder.append(URLEncoder.encode(param.getKey(),"UTF-8")).append('=').append(URLEncoder.encode(param.getValue(),"UTF-8"));if(iterator.hasNext()){urlBuilder.append('&');}}}//重要部分,创建HttpClient对象HttpClientclient=getNewHttpClient();//发送get请求创建HttpGet对象HttpGetgetMethod=newHttpGet(urlBuilder.toString());HttpResponseresponse=client.execute(getMethod);//获取状态码intres=response.getStatusLine().getStatusCode();if(res==200){StringBuilderbuilder=newStringBuilder();//获取响应内容BufferedReaderreader=newBufferedReader(newInputStreamReader(response.getEntity().getContent()));for(Strings=reader.readLine();s!=null;s=reader.readLine()){builder.append(s);}returnbuilder.toString();}}catch(Exceptione){}returnnull;}/***post请求**@paramurlString*@paramparams*@return*/publicstaticStringpostRequest(StringurlString,List<BasicNameValuePair>params){try{//1.创建HttpClient对象HttpClientclient=getNewHttpClient();//2.发get请求创建HttpGet对象HttpPostpostMethod=newHttpPost(urlString);postMethod.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));HttpResponseresponse=client.execute(postMethod);intstatueCode=response.getStatusLine().getStatusCode();if(statueCode==200){System.out.println(statueCode);returnEntityUtils.toString(response.getEntity());}}catch(Exceptione){}returnnull;}//保存时+当时的秒数,publicstaticlongexpires(Stringsecond){Longl=Long.valueOf(second);returnl*1000L+System.currentTimeMillis();}privatestaticHttpClientgetNewHttpClient(){try{KeyStoretrustStore=KeyStore.getInstance(KeyStore.getDefaultType());trustStore.load(null,null);SSLSocketFactorysf=newSSLSocketFactoryEx(trustStore);sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);HttpParamsparams=newBasicHttpParams();HttpProtocolParams.setVersion(params,HttpVersion.HTTP_1_1);HttpProtocolParams.setContentCharset(params,HTTP.UTF_8);SchemeRegistryregistry=newSchemeRegistry();registry.register(newScheme("http",PlainSocketFactory.getSocketFactory(),80));registry.register(newScheme("https",sf,443));ClientConnectionManagerccm=newThreadSafeClientConnManager(params,registry);returnnewDefaultHttpClient(ccm,params);}catch(Exceptione){returnnewDefaultHttpClient();}}}
本工具类需要传递url的参数,还有一个工具类需要在定义url前传参数将完整的url路径传递过来。
参考链接:http://www.cnblogs.com/yejiurui/archive/2013/04/12/3015924.html
更多相关文章
- Android调用WebService
- Android(安卓)Phone模块 三
- Android(安卓)service: startService的代码实现
- 【Android】创建Popwindow弹出菜单的两种方式
- 【notification】Android(安卓)中创建震动通知
- [android studio]com.android.ide.common.process.ProcessExcept
- Google用户登录界面 Android实现
- android下载文件保存到sd卡
- 【Java转Android】30. LitePal操作SQLite数据库