Android 封装http请求的工具类
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URLEncoder; import java.security.KeyStore; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; 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.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; 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.net.ConnectivityManager; /** * 网络工具类 * * @author malinkang * */ public class NetUtils { /** * 对网络连接状态进行判断 * * @return true, 可用; false, 不可用 */ public static boolean isOpenNetwork(Context context) { ConnectivityManager connManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connManager.getActiveNetworkInfo() != null) { return connManager.getActiveNetworkInfo().isAvailable(); } return false; } /** * get请求 * * @param urlString * @param params * @return */ public static String getRequest(String urlString, Map<String, String> params) { try { StringBuilder urlBuilder = new StringBuilder(); 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对象 HttpClient client = getNewHttpClient(); // 发送get请求创建HttpGet对象 HttpGet getMethod = new HttpGet(urlBuilder.toString()); HttpResponse response = client.execute(getMethod); // 获取状态码 int res = response.getStatusLine().getStatusCode(); if (res == 200) { StringBuilder builder = new StringBuilder(); // 获取响应内容 BufferedReader reader = new BufferedReader( new InputStreamReader(response.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = reader .readLine()) { builder.append(s); } return builder.toString(); } } catch (Exception e) { } return null; } /** * post请求 * * @param urlString * @param params * @return */ public static String postRequest(String urlString, List<BasicNameValuePair> params) { try { // 1. 创建HttpClient对象 HttpClient client = getNewHttpClient(); // 2. 发get请求创建HttpGet对象 HttpPost postMethod = new HttpPost(urlString); postMethod.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); HttpResponse response = client.execute(postMethod); int statueCode = response.getStatusLine().getStatusCode(); if (statueCode == 200) { System.out.println(statueCode); return EntityUtils.toString(response.getEntity()); } } catch (Exception e) { } return null; } // 保存时+当时的秒数, public static long expires(String second) { Long l = Long.valueOf(second); return l * 1000L + System.currentTimeMillis(); } private static HttpClient getNewHttpClient() { try { KeyStore trustStore = KeyStore.getInstance(KeyStore .getDefaultType()); trustStore.load(null, null); SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); registry.register(new Scheme("https", sf, 443)); ClientConnectionManager ccm = new ThreadSafeClientConnManager( params, registry); return new DefaultHttpClient(ccm, params); } catch (Exception e) { return new DefaultHttpClient(); } } }
另一种封装好的get请求,最近经常用的:
public class HttpUtils { private final static String TAG = "EasyTokenSevice"; private final static int connectionTimeout = 5000; private static InputStream inputStream = null; private static String urlStr = null; private static boolean isConnecting; /** * 封装http get请求 * * @param url * @return is */ public static InputStream get(String url)throws IOException ,Exception { urlStr = url; isConnecting = true; HttpGet httpGet = new HttpGet(urlStr); HttpParams httpParameters = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParameters, connectionTimeout); DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters); HttpResponse response = httpClient.execute(httpGet); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { HttpEntity entity = response.getEntity(); inputStream = entity.getContent(); return inputStream;} else return null; } }
如果,这篇博客帮您解决了问题,不妨点击一下右下角的【推荐】。如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。因为,我的热情需要您的肯定和支持!感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends! |