package com.example.chapter14.util;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Map;
import java.util.zip.GZIPInputStream;
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;
public class HttpUtil {
private final static String TAG = "HttpUtil";
private final static int CONNECT_TIMEOUT = 15000;
private final static int READ_TIMEOUT = 15000;
// 兼容https开头的调用地址
private static void compatibleSSL(String callUrl) throws Exception {
if (callUrl.toLowerCase().startsWith("https")) {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) {
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) {
}
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
}
}
// 对指定接口地址发起GET调用
public static String get(String callUrl, Map<String, String> headers) {
String resp = ""; // 应答内容
try {
Log.d(TAG, "请求地址:"+callUrl);
compatibleSSL(callUrl); // 兼容https开头的调用地址
URL url = new URL(callUrl); // 根据网址字符串构建URL对象
// 打开URL对象的网络连接,并返回HttpURLConnection连接对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); // 设置请求方式
setConnHeader(conn, headers);// 设置HTTP连接的头部信息
conn.connect(); // 开始连接
// 打印HTTP调用的应答内容长度、内容类型、压缩方式
Log.d(TAG, String.format("应答内容长度=%d, 内容类型=%s, 压缩方式=%s",
conn.getContentLength(), conn.getContentType(), conn.getContentEncoding()) );
// 对输入流中的数据解压和字符编码,得到原始的应答字符串
resp = getUnzipString(conn);
// 打印HTTP调用的应答状态码和应答报文
Log.d(TAG, String.format("应答状态码=%d, 应答报文=%s", conn.getResponseCode(), resp) );
conn.disconnect(); // 断开连接
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
// 从指定url获取图片
public static Bitmap getImage(String callUrl, Map<String, String> headers) {
Bitmap bitmap = null; // 位图对象
try {
Log.d(TAG, "请求地址:"+callUrl);
compatibleSSL(callUrl); // 兼容https开头的调用地址
URL url = new URL(callUrl); // 根据网址字符串构建URL对象
// 打开URL对象的网络连接,并返回HttpURLConnection连接对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); // 设置请求方式
setConnHeader(conn, headers);// 设置HTTP连接的头部信息
conn.connect(); // 开始连接
// 打印图片获取的应答内容长度、内容类型、压缩方式
Log.d(TAG, String.format("应答内容长度=%d, 内容类型=%s, 压缩方式=%s",
conn.getContentLength(), conn.getContentType(), conn.getContentEncoding()) );
// 对输入流中的数据解码,得到位图对象
bitmap = BitmapFactory.decodeStream(conn.getInputStream());
// 打印图片获取的应答状态码和位图大小
Log.d(TAG, String.format("应答状态码=%d, 位图大小=%s", conn.getResponseCode(), bitmap.getByteCount()) );
conn.disconnect(); // 断开连接
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
// 对指定接口地址发起POST调用
public static String post(String callUrl, String req, Map<String, String> headers) {
String resp = ""; // 应答内容
try {
Log.d(TAG, "请求地址:"+callUrl+", 请求报文="+req);
compatibleSSL(callUrl); // 兼容https开头的调用地址
URL url = new URL(callUrl); // 根据网址字符串构建URL对象
// 打开URL对象的网络连接,并返回HttpURLConnection连接对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST"); // 设置请求方式
setConnHeader(conn, headers);// 设置HTTP连接的头部信息
conn.setRequestProperty("Content-Type", "application/json"); // 请求报文为json格式
conn.setDoOutput(true); // 准备让连接执行输出操作。默认为false,POST方式需要设置为true
//conn.setDoInput(true); // 准备让连接执行输入操作。默认为true
conn.connect(); // 开始连接
OutputStream os = conn.getOutputStream(); // 从连接对象中获取输出流
os.write(req.getBytes()); // 往输出流写入请求报文
// 打印HTTP调用的应答内容长度、内容类型、压缩方式
Log.d(TAG, String.format("应答内容长度=%s, 内容类型=%s, 压缩方式=%s",
conn.getHeaderField("Content-Length"), conn.getHeaderField("Content-Type"),
conn.getHeaderField("Content-Encoding")) );
// 对输入流中的数据解压和字符编码,得到原始的应答字符串
resp = getUnzipString(conn);
// 打印HTTP调用的应答状态码和应答报文
Log.d(TAG, String.format("应答状态码=%d, 应答报文=%s", conn.getResponseCode(), resp) );
conn.disconnect(); // 断开连接
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
// 把文件上传给指定的URL
public static String upload(String uploadUrl, String uploadFile, Map<String, String> headers) {
String resp = ""; // 应答内容
// 从本地文件路径获取文件名
String fileName = uploadFile.substring(uploadFile.lastIndexOf("/"));
String end = "\r\n"; // 结束字符串
String hyphens = "--"; // 连接字符串
String boundary = "WUm4580jbtwfJhNp7zi1djFEO3wNNm"; // 边界字符串
try (FileInputStream fis = new FileInputStream(uploadFile)) {
Log.d(TAG, "上传地址:"+uploadUrl+", 上传文件="+uploadFile);
compatibleSSL(uploadUrl); // 兼容https开头的调用地址
URL url = new URL(uploadUrl); // 根据网址字符串构建URL对象
// 打开URL对象的网络连接,并返回HttpURLConnection连接对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("
没有合适的资源?快使用搜索试试~ 我知道了~
android编程资料
共1216个文件
xml:422个
java:401个
png:282个
需积分: 12 1 下载量 139 浏览量
2022-04-14
23:31:33
上传
评论
收藏 16.89MB ZIP 举报
温馨提示
android编程资料
资源详情
资源评论
资源推荐
收起资源包目录
android编程资料 (1216个子文件)
gradlew.bat 2KB
happy.gif 410KB
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
build.gradle 2KB
build.gradle 2KB
build.gradle 2KB
build.gradle 1KB
build.gradle 1KB
build.gradle 1KB
build.gradle 1KB
build.gradle 974B
build.gradle 935B
build.gradle 935B
build.gradle 935B
build.gradle 935B
build.gradle 935B
build.gradle 865B
build.gradle 865B
build.gradle 865B
settings.gradle 236B
gradlew 5KB
lotus.heif 24KB
gradle-wrapper.jar 53KB
HttpUtil.java 13KB
CommunicationUtil.java 12KB
LoginSQLiteActivity.java 11KB
ShoppingCartActivity.java 11KB
MediaRecorderActivity.java 11KB
CalculatorActivity.java 11KB
ShoppingCartActivity.java 10KB
LoginShareActivity.java 10KB
LoginMainActivity.java 9KB
UserDBHelper.java 9KB
EvaluateGoodsActivity.java 9KB
DownloadImageActivity.java 9KB
UserDBHelper.java 9KB
UserDBHelper.java 9KB
MonitorSmsActivity.java 8KB
CartDBHelper.java 8KB
CartDBHelper.java 8KB
MainActivity.java 7KB
DownloadApkActivity.java 7KB
DepartmentHomeFragment.java 7KB
ProviderApkActivity.java 7KB
ProviderMmsActivity.java 7KB
MainActivity.java 7KB
AudioPlayActivity.java 7KB
BannerPager.java 6KB
GoodsDBHelper.java 6KB
GoodsDBHelper.java 6KB
BannerPager.java 6KB
EvaluateDetailActivity.java 6KB
BillAddActivity.java 6KB
NotifyChannelActivity.java 6KB
SwipeRecyclerActivity.java 6KB
FileUtil.java 6KB
GlideCacheActivity.java 6KB
LinearDynamicAdapter.java 5KB
AlarmActivity.java 5KB
VideoChooseActivity.java 5KB
FileUtil.java 5KB
BillDBHelper.java 5KB
ShoppingChannelActivity.java 5KB
NewsInfo.java 5KB
PhotoChooseActivity.java 5KB
ImageChangeActivity.java 5KB
MainActivity.java 5KB
RecyclerCombineAdapter.java 5KB
RecyclerStagAdapter.java 5KB
MainActivity.java 5KB
AsyncTaskActivity.java 5KB
PhotoTakeActivity.java 5KB
NotifyMarkerActivity.java 5KB
BillListAdapter.java 5KB
ImageSpecialActivity.java 5KB
GuessLikeActivity.java 5KB
MainActivity.java 5KB
FileUtil.java 4KB
RecyclerGridAdapter.java 4KB
RecyclerDynamicActivity.java 4KB
TabLayoutActivity.java 4KB
OrderListAdapter.java 4KB
PlanetListWithButtonAdapter.java 4KB
MobileGridAdapter.java 4KB
BroadOrderActivity.java 4KB
NotifyUtil.java 4KB
共 1216 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
伤风止疼膏
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 王姿.html
- 51单片机学习(1)-软件keil下载
- 历届(第1-21届)希望杯数学竞赛初一试题及答案(最新整理).doc全国数学邀请赛(264页资料)
- 水滴.psd
- TokenPocket_V2.1.2_release.apk
- Apache-druid-kafka-rce.yaml
- 基于C#的ASP.NET数据库原理及应用技术课程指导平台的开发
- 基于ROS的智能车轨迹跟踪算法的仿真与设计源码运用PID跟踪算法.zip.zip
- Bug Bounty Tip - i春秋Self-XSS变废为宝的奇思妙想
- 1991-2015年全国初中化学竞赛复赛试题汇编(212页)(24年竞赛复赛真题).docx天原杯
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0