下面使用的是HttpURLConnection进行的网络链接,并对https进行了忽略证书。

在这个utils里面,也使用到前面几个utils,比如下载文件的方法,就使用到了Fileutils

package cgjr.com.cgjr.utils;

import android.text.TextUtils;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Map; import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import cgjr.com.cgjr.constants.Constants; /**
* Created by Administrator on 2016/4/13.
*/
public class HttpUtils { /**
* 通过http post 提交数据
*
* @param url 访问路径
* @param content 内容
* @param encoding 返回内容字符编码
* @return
*/
public static String HttpPost(String url, String content, String encoding) {
DebugUtils.i("HttpUtils", "content: " + content);
HttpURLConnection conn = null;
String str = "";
try {
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setDoInput(true);// 打开输入流,以便从服务器获取数据
conn.setDoOutput(true);// 打开输出流,以便向服务器提交数据
conn.setConnectTimeout(0); // 设置连接超时时间
conn.setReadTimeout(30000); //设置返回超时时间,下面要对超时进行处理
conn.setRequestMethod("POST");
conn.setUseCaches(false);// 使用Post方式不能使用缓存
conn.setInstanceFollowRedirects(true);
//conn.setRequestProperty("Cookie", SessionId);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
conn.connect();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(content);
out.flush();
out.close(); // flush and close
int response = conn.getResponseCode(); // 获得服务器的响应码
if (response == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "UTF-8");
sb.append(line);
}
str = sb.toString();
}
} catch (Exception e) {
e.printStackTrace();
//里面会抛连接和返回超时java.net.SocketTimeoutException,还有IO异常
return "faild";
} finally {
conn.disconnect();
conn = null;
}
return str;
} /**
* GET请求方式
*
* @param url
* @return
*/
public static String HttpGet(String url, String encoding) {
LogUtils.i("HttpUtils", "encoding: " + encoding);
HttpURLConnection conn = null;
String str = "";
try {
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setDoInput(true);// 打开输入流,以便从服务器获取数据
conn.setDoOutput(true);// 打开输出流,以便向服务器提交数据
conn.setConnectTimeout(30000); // 设置连接超时时间
conn.setReadTimeout(30000); //设置返回超时时间,下面要对超时进行处理
conn.setRequestMethod("GET");
conn.connect();
int response = conn.getResponseCode(); // 获得服务器的响应码
if (response == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "UTF-8");
sb.append(line);
}
str = sb.toString();
}
} catch (Exception e) {
e.printStackTrace();
//里面会抛连接和返回超时java.net.SocketTimeoutException,还有IO异常
return "faild";
} finally {
if (conn != null)
conn.disconnect();
}
return str;
} /**
* 通过https post 提交数据
*
* @param url 访问路径
* @param content 内容
* @param encoding 返回内容字符编码
* @return
*/
public static String HttpsPost(String url, String content, String encoding) {
LogUtils.i("HttpUtils", "content: " + content);
SSLContext sc = null;
try {
sc = SSLContext.getInstance("TLS");
MyTrustManager mtm = new MyTrustManager();
sc.init(null, new TrustManager[]{mtm}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
}); } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "faild";
} catch (KeyManagementException e) {
e.printStackTrace();
return "faild";
}
HttpsURLConnection conn = null;
String str = "";
try {
conn = (HttpsURLConnection) new URL(url).openConnection();
conn.setDoInput(true);// 打开输入流,以便从服务器获取数据
conn.setDoOutput(true);// 打开输出流,以便向服务器提交数据
conn.setConnectTimeout(30000); // 设置连接超时时间
conn.setReadTimeout(30000); //设置返回超时时间,下面要对超时进行处理
conn.setRequestMethod("POST");
conn.setUseCaches(false);// 使用Post方式不能使用缓存
conn.setInstanceFollowRedirects(true);
//conn.setRequestProperty("Cookie", SessionId);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
conn.connect();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(content);
out.flush();
out.close(); // flush and close
int response = conn.getResponseCode(); // 获得服务器的响应码
if (response == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "UTF-8");
sb.append(line);
}
str = sb.toString();
}
} catch (Exception e) {
e.printStackTrace();
//里面会抛连接和返回超时java.net.SocketTimeoutException,还有IO异常
return "faild";
} finally {
if (conn != null) {
conn.disconnect();
}
}
return str;
} public static String HttpsGet(String url, String encoding) {
LogUtils.i("HttpUtils", "httpsget url: " + url + " encoding: " + encoding);
SSLContext sc = null;
try {
sc = SSLContext.getInstance("TLS");
MyTrustManager mtm = new MyTrustManager();
sc.init(null, new TrustManager[]{mtm}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
}); } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "faild";
} catch (KeyManagementException e) {
e.printStackTrace();
return "faild";
}
HttpsURLConnection conn = null;
String str = "";
try {
conn = (HttpsURLConnection) new URL(url).openConnection();
conn.setDoInput(true);// 打开输入流,以便从服务器获取数据
conn.setDoOutput(true);// 打开输出流,以便向服务器提交数据
conn.setConnectTimeout(30000); // 设置连接超时时间
conn.setReadTimeout(30000); //设置返回超时时间,下面要对超时进行处理
conn.setRequestMethod("GET");
conn.connect();
int response = conn.getResponseCode(); // 获得服务器的响应码
if (response == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "UTF-8");
sb.append(line);
}
str = sb.toString();
}
} catch (Exception e) {
e.printStackTrace();
//里面会抛连接和返回超时java.net.SocketTimeoutException,还有IO异常
return "faild";
} finally {
if (conn != null) {
conn.disconnect();
}
}
return str;
} /**
* 获取基本信息
*
* @return
*/
public static StringBuffer getConstansData() {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(Constants.order_from);//向服务器传递版本号 stringBuffer.deleteCharAt(stringBuffer.length() - 1);
return stringBuffer;
} /**
* 封装请求体信息
* @params 请求体内容,
* @encode 编码格式
*/
public static StringBuffer getRequestData(Map<String, String> params, String encode) {
StringBuffer stringBuffer = getConstansData(); // 存储封装好的请求体信息
stringBuffer.append("&");
try {
if (params != null && params.size() > 0) {
for (Map.Entry<String, String> entry : params.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if (!TextUtils.isEmpty(key)) {
stringBuffer.append(key)
.append("=")
.append(URLEncoder.encode((TextUtils.isEmpty(value) ? "" : value), encode))
.append("&");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
stringBuffer.deleteCharAt(stringBuffer.length() - 1); // 删除最后的一个"&"
LogUtils.i("", stringBuffer.toString());
return stringBuffer;
} static class MyTrustManager implements X509TrustManager { @Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException { } @Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException { } @Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
} /**
* 服务器下载文件
*
* @param fileDir 文件保存路径
* @param fileName 文件名称
* @param url_ 下载路径
* @return
*/
public static boolean downLoadingFile(String fileDir, String fileName, String url_) {
boolean flag = false;
HttpURLConnection conn = null;
FileUtils fileUtils = new FileUtils();
try {
conn = (HttpURLConnection) (new URL(url_)).openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(10 * 1000);
conn.getDoInput();
conn.getDoOutput();
conn.connect();
if (conn.getResponseCode() == 200) {
File file = fileUtils.write2SDFromInput(fileDir, fileName, conn.getInputStream());
if (file != null) {
flag = true;
} else {
flag = false;
}
}
} catch (IOException e) {
e.printStackTrace();
flag = false;
} finally {
if (conn != null) {
conn.disconnect();
}
}
return flag;
} }

工具类总结---(六)---之http及https请求的更多相关文章

  1. Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)

    csdn :码小白 原文地址: http://blog.csdn.net/sk719887916/article/details/51958010 RetrofitClient 基于Retrofit2 ...

  2. 『言善信』Fiddler工具 — 15、使用Fiddler抓取HTTPS请求

    目录 1.Fiddler抓取HTTPS过程 2.拓展:SSL/TLS证书握手原理 3.Fiddler抓取HTTPS原理总结 4.Fiddler抓取HTTPS设置 步骤1:配置证书 步骤2:勾选设置 5 ...

  3. javascript常用工具类整理(copy)

    JavaScript常用工具类 类型 日期 数组 字符串 数字 网络请求 节点 存储 其他 1.类型 isString (o) { //是否字符串 return Object.prototype.to ...

  4. JavaScript工具类(三):localStorage本地储存

    localStorage Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)两个存储对象来对网页的数据进行添加.删除.修改.查询操作. ...

  5. iOS开发 -- 为本地文件添加自定义属性的工具类

    前言:实际开发,我们可能会有这样的需求,就是为文件添加自定义的属性,或者是可以将文件的相关信息添加进该文件的属性中,这样可以以备下次读取利用. 那么本文就是要介绍"拓展文件属性的工具类&qu ...

  6. Java字符串转16 进制工具类Hex.java

    Java字符串转16 进制工具类Hex.java 学习了:https://blog.csdn.net/jia635/article/details/56678086 package com.strin ...

  7. Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils

    Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils Spring 系列目录(https://www.cnblogs.com/binary ...

  8. 【Hutool】Hutool工具类之Http工具——HttpUtil

    最简单最直接的上手可以参见参考文档:http://hutool.mydoc.io/?t=216015   Http协议的介绍,请参考web随笔:http://www.cnblogs.com/jiang ...

  9. java:工具类

    Google guava工具类的介绍和使用:https://blog.csdn.net/wwwdc1012/article/details/82228458 Apache Commons 工具类介绍及 ...

  10. java 微信开发的工具类WeChatUtils

    import com.alibaba.fastjson.JSONObject;import com.bhudy.entity.BhudyPlugin;import com.bhudy.service. ...

随机推荐

  1. cassandra高级操作之索引、排序以及分页

    本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...

  2. Brackets--我的初恋编辑器

    大学毕业以后,因为一些个人琐事没有找到自己专业的对口工作,整天混混沌沌得过着也没有打破现状的决心和机会.但是每当独自思考的时候总是一阵阵的害怕,怕自己从此一事无成一无所有.于是在某个心潮澎湃的瞬间开始 ...

  3. jQuery Ajax 实例 全解析(转)

    1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. url (String) : 请求的HTML页的URL地址. data (M ...

  4. linux最常用命令

    1,cd命令   作用:切换当前目录,它的参数切换的路劲,可以是相对路劲,也可以是绝对路劲. 用法: cd /root/Docements #切换当/root/Docements,绝对路劲 cd ./ ...

  5. 老李谈HTTP1.1的长连接 2

    HTTP1.1的长连接 但是HTTP1.1开始默认建立的是长连接,即一旦浏览器发起HTTP请求,建立的连接不会请求应答之后立刻断掉. 1. 一个复杂的具备很多HTTP资源的网页会建立多少TCP连接,如 ...

  6. 七个 Android 程序猿提高效率必备工具

    Android 程序猿提高效率必备工具 0x00 Code tree for GitHub 这个 Chrome 浏览器插件.Github 作为最大同性交友网站,每天的工作几乎是从打开这个网站开始的.当 ...

  7. 在app中屏蔽第三方键盘

    iOS8开放了安装第三方键盘的权限,但是在项目开发中,有些情况是需要禁用第三方键盘的.比如说,数字键盘上需要自定义按钮,但是在第三方键盘弹出时,按钮就覆盖在这上面了,在这中情况下,最好的办法是禁用第三 ...

  8. php+ajax+jq

    <html> <head> <meta charset="UTF-8"> <title>JQueryAjax+PHP</tit ...

  9. koa-中间件流程控制

    koa中间件执行流程 koa中间件的的执行顺序是洋葱模型,外层逐步向内,执行到最中间再逐步向外扩展,实现这个顺序的模型需要依赖于generator函数,它可以暂停执行将控制权交出,等到执行next再得 ...

  10. 删除 vim 命令

    x 删除当前光标下的字符dw 删除光标之后的单词剩余部分.d$ 删除光标之后的该行剩余部分.dd 删除当前行. c 功能和d相同,区别在于完成删除操作后进入INSERT MODEcc 也是删除当前行, ...