下面使用的是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. python如何保证输入键入数字

    要求:python写一个要求用户输入数字,如果不是数字就一直循环要求输入,直到输入数字为止的代码 错误打开方式: while True: ten=input('Enter a number:') if ...

  2. (转)经验分享:CSS浮动(float,clear)通俗讲解

    很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...

  3. css远距离链接

    远距离链接主要运用了hover伪类,但是运用了两次 <!DOCTYPE html> <html lang="en"> <head> <me ...

  4. PRINCE2重要性--光环国际培训

    项目的重要性 答:对于当今的组织来说,一个关键的挑战,就是能够成功地平衡以下两个并存的.互相竞争的方面:保持现有的商业运营--盈利能力.服务质量.客户关系.品牌忠实度.生产效率.市场信心等,这些被称为 ...

  5. API的文档自动生成——基于CDIF的SOA基本能力

    当前,作为大部分移动app和云服务后台之间的标准连接方式,REST API已经得到了绝大部分开发者的认可和广泛的应用.近年来,在新兴API经济模式逐渐兴起,许多厂商纷纷将自己的后台业务能力作为REST ...

  6. Terminating app due to uncaught exception 'NSUnknownKeyException' this class is not key value coding-compliant for the key

     Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ViewController > se ...

  7. POJ2352Stars【树状数组】

    Stars Description Astronomers often examine star maps where stars are represented by points on a pla ...

  8. Luogu2723丑数Humble Numbers【归并排序】

    Luogu2723丑数Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包 ...

  9. C#调用webbrowser,阻止弹出新HTML页面

    参考资料: 1.C#调用webbrowser,阻止弹出新IE窗口 http://www.cnblogs.com/blindman/p/3819649.html 2.[WPF]监听WPF的WebBrow ...

  10. POPTEST老李谈Debug和Release的区别(c#) 1

    POPTEST老李谈Debug和Release的区别(c#)   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...