public class HttpUtils { private static final String LOG_TAG = ACRA.LOG_TAG; private static final TrustManager[] TRUST_MANAGER = { new NaiveTrustManager() }; private static final AllowAllHostnameVerifier HOSTNAME_VERIFIER = new AllowAllHostnameVerifier(); private static final int SOCKET_TIMEOUT = 3000; /** * Send an HTTP(s) request with POST parameters. * * @param parameters * @param url * @throws UnsupportedEncodingException * @throws IOException * @throws KeyManagementException * @throws NoSuchAlgorithmException */ public static void doPost(Map<?, ?> parameters, URL url, String login, String password) throws UnsupportedEncodingException, IOException, KeyManagementException, NoSuchAlgorithmException { URLConnection cnx = getConnection(url); // Construct data StringBuilder dataBfr = new StringBuilder(); for (Object key : parameters.keySet()) { if (dataBfr.length() != 0) { dataBfr.append('&'); } Object value = parameters.get(key); if (value == null) { value = ""; } dataBfr.append(URLEncoder.encode(key.toString(), "UTF-8")).append('=') .append(URLEncoder.encode(value.toString(), "UTF-8")); } // Add BASIC auth credentials if available if (!isNull(login) || !isNull(password)) { String userPassword = (login != null ? login : "") + ":" + (password != null ? password : ""); String encodedAuth = Base64.encodeToString(userPassword.getBytes(), Base64.DEFAULT); cnx.setRequestProperty("Authorization", "Basic " + encodedAuth); } // POST data cnx.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(cnx.getOutputStream()); Log.d(LOG_TAG, "Posting crash report data"); wr.write(dataBfr.toString()); wr.flush(); wr.close(); Log.d(LOG_TAG, "Reading response"); BufferedReader rd = new BufferedReader(new InputStreamReader(cnx.getInputStream())); String line; int linecount = 0; try { while ((line = rd.readLine()) != null) { linecount++; if (linecount <= 10) { Log.d(LOG_TAG, line); } } } catch (Exception e) { Log.i(LOG_TAG, "Ignoring exception while reading result", e); } rd.close(); } private static boolean isNull(String aString) { return aString == null || aString == ReportsCrashes.NULL_VALUE; } /** * Open an URL connection. If HTTPS, accepts any certificate even if not * valid, and connects to any host name. * * @param url * The destination URL, HTTP or HTTPS. * @return The URLConnection. * @throws IOException * @throws NoSuchAlgorithmException * @throws KeyManagementException */ private static URLConnection getConnection(URL url) throws IOException, NoSuchAlgorithmException, KeyManagementException { URLConnection conn = url.openConnection(); if (conn instanceof HttpsURLConnection) { // Trust all certificates SSLContext context = SSLContext.getInstance("TLS"); context.init(new KeyManager[0], TRUST_MANAGER, new SecureRandom()); SSLSocketFactory socketFactory = context.getSocketFactory(); ((HttpsURLConnection) conn).setSSLSocketFactory(socketFactory); // Allow all hostnames ((HttpsURLConnection) conn).setHostnameVerifier(HOSTNAME_VERIFIER); } conn.setConnectTimeout(SOCKET_TIMEOUT); conn.setReadTimeout(SOCKET_TIMEOUT); return conn; }

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. 自定义android Rating bar
  2. [Android][Framework] 添加系统服务
  3. android 巧用finish方法
  4. android中如何设置点击button页面跳转
  5. Android图形动画概述
  6. ScrollView嵌套滑动TextView冲突事件解决
  7. android自定义组件(手机加速球+水面波动效
  8. 深入理解 Android(安卓)卷I - 第4章 深入
  9. Android中实现自动轮播的框架(Banner)的介
  10. Android分享中,如何过滤指定的应用,并且对