网络访问okhttp
# 说明: okhttp是安卓中常用的插件,速度快性能稳定,和http模块相辅相成,提供了一些http模块不具备的方法例如json提交和上传下载文件等
# get(url)
# 描述
- get请求
# 参数
参数名 | 类型 | 说明 |
---|---|---|
url | String | 网址 |
# 示例
const url = 'http://api.baidu.com'
const http = new okHttp();
const res = http.get(url);
console.log(res)
# 返回值
- 返回值类型:String
- 说明:
# 备注
# post(host,param)
# 描述
- post请求
# 参数
参数名 | 类型 | 说明 |
---|---|---|
host | String | 网址 |
param | map | post数据 |
# 示例1
var okhttp1=new okHttp();
var map1=new map();
map1.add('a','1');
okhttp1.post('http://www.baidu.com',map1)
# 示例2
/**
* @author 飞云
* @wechat imfeiyun
* @wiki http://aiwork.wiki
* @link http://www.feiyunjs.com
*/
let host = 'http://api.baidu.com'
var map1 = new map();
map1.add('service', 'Client.Task_Ahid.GetData');
map1.add('imei', getImei());
let http = new okHttp();
http.setTimeOut(10 * 1000, 10 * 1000); //设置超时
http.setCharSet('UTF-8');
let res = http.post(encodeURI(host), map1)
// print.log(res)
let json = JSON.parse(res);
if (json.ret === 200) {
// printl('请求结果', JSON.stringify(json['data]));
} else {
printl(json.msg || '请求失败');
}
# 返回值
- 返回值类型:String
- 说明:
# 备注
# json(arg0,arg1)
# 描述
- json请求
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 网址 |
arg1 | Object | json数据字符串 |
# 示例1
var okhttp1=new okHttp();
let json={'city':'shanghai'}
let res=okhttp1.json('http://www.baidu.com',json)
printl(res);
# 示例2
/**
* @author 飞云
* @wechat imfeiyun
* @wiki http://aiwork.wiki
* @link http://www.feiyunjs.com
*/
let host = 'http://api.baidu.com'
let postData = {
service: 'Client.Task_Android.GetData',
imei: device.getIMEI(),
}
let http = new okHttp();
// http.setTimeOut(10 * 1000, 10 * 1000); //设置超时
http.setCharSet('UTF-8');
try {
let res = http.json(encodeURI(host), postData)
// printl(res)
// console.log(JSON.stringify(postData))
let json = JSON.parse(res);
if (json['ret'] === 200) {
printl(json['data'])
} else {
printl(json['msg']);
}
} catch (error) {
printl(error)
}
# 返回值
- 返回值类型:String
- 说明:
# 备注
# void clearHeader() 清除header
# 描述
- 清除header
# 参数
无
# 返回值
- 返回值类型:void
- 说明:
# 备注
# void downloadFile(arg0,arg1) 下载文件
# 描述
- 下载文件
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 网址 |
arg1 | String | 文件路径 |
# 示例
var okhttp1=new okhttp();
okhttp1.downloadFile('http://www.baidu.com/1.zip','/sdcard/1.zip')
# 返回值
- 返回值类型:void
- 说明:
# 备注
# String postForm(arg0,arg1) post请求表单
# 描述
- post请求表单
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 网址 |
arg1 | String | post数据 |
# 示例
var okhttp1=new okHttp();
okhttp1.postForm('http://www.baidu.com','a=1&b=2&c='+encodeURIComponent('中文'))
# 返回值
- 返回值类型:String
- 说明:
# 备注
# void setCharSet(arg0) 设置字符集
# 描述
- 设置字符集
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 字符集 |
# 示例
okhttp1.setCharSet('UTF-8')
# 返回值
- 返回值类型:void
- 说明:
# 备注
# void setCookie(arg0,arg1) 添加cookie
# 描述
- 添加cookie
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 参数名 |
arg1 | String | 参数值 |
# 返回值
- 返回值类型:void
- 说明:
# 备注
# void setHeader(arg0,arg1) 设置http头
# 描述
- 设置http头
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 参数名 |
arg1 | String | 参数值 |
# 返回值
- 返回值类型:void
- 说明:
# 备注
# String uploadFile(arg0,arg1,arg2,arg3) 上传文件
# 描述
- 上传文件
# 参数
参数名 | 类型 | 说明 |
---|---|---|
arg0 | String | 网址 |
arg1 | String | 参数名 |
arg2 | String | 文件路径 |
arg3 | map | map表单数据 |
# 示例
var http1=new okHttp();
var fromData=new map();
fromData.add('a','1');
okhttp1.uploadFile('http://www.baidu.com','file','/sdcard/1.jpg',fromData)
# 返回值
- 返回值类型:String
- 说明:
# 备注
# 案例
# 获取301重定向后的真实地址
/**
* @author 飞云
* @wechat imfeiyun
* @wiki http://aiwork.wiki
* @link http://www.feiyunjs.com
*/
const http = new okHttp();
http.get("http://api.***.com")
let host = http.getResponseHeaders(); // 获取HEADER的内容
// 正则表达式提取 Location
const match = host.match(/Location:\s*(.+)/);
if (match) {
const location = match[1].trim();
console.log('重定向的地址', location); // 输出: http://120.230.79.*:8430/
if (location) {
// 访问原始的地址,得到最终内容
let res = http.get(location)
printl(res)
} else {
printl.err('未获取到重定向的Host')
}
} else {
console.log('Location not found');
}
# 获取某音短链接重定向后的地址
/**
* @author 未知
* @wiki http://aiwork.wiki
*/
importClass(java.net.URL);
importClass(java.net.HttpURLConnection);
// 发送请求并获取响应
var url = new URL('https://v.douyin.com/JfwAoWb');
var connection = url.openConnection();
connection.setRequestMethod('GET');
connection.connect();
// 获取重定向的 AbsoluteUri
var redirectUrl = connection.getHeaderField('Location');
// 打印重定向的 AbsoluteUri
var res = connection.toString()
let index = res.indexOf(':') + 1;
let value = res.substring(index);
printl(value);
# 蓝奏云文件下载
/**
* @author 未知
* @wiki http://aiwork.wiki
*/
var url = "https://wwt.lanzouu.com/icuiF1o31f8d"
var http = new okHttp()
r = http.get(url)
var regex = /\/fn\?[\w-]+/g;
r = r.match(regex)
printl(r)
r2 = http.get("https://wwt.lanzouu.com/" + r[1])
var regex2 = /'sign':'(.*?)'/
var sign = r2.match(regex2)
printl(sign)
var regex3 = /url\s:\s'(.*?)'/
var url = r2.match(regex3)
printl(url)
tt = "https://wwt.lanzouu.com" + url[1]
printl(tt)
http.setHeader('Referer', "https://wwt.lanzouu.com")
http.setHeader('User-Agent', "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0")
var data = new map()
data.add('action', 'downprocess')
data.add('signs', '?ctdf')
data.add('sign', sign[1])
data.add('websign', '')
data.add('websignkey', 'bL27')
data.add('ves', 1)
post = http.post(tt, data)
// post = http.json(tt,data)
printl(post)
post = JSON.parse(post)
http.clearHeader()
http.setHeader('accept', "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
http.setHeader("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")
http.setHeader("sec-ch-ua", "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Microsoft Edge\";v=\"122\"")
http.setHeader("sec-ch-ua-mobile", "?0")
http.setHeader("sec-ch-ua-platform", "\"Windows\"")
http.setHeader("sec-fetch-dest", "document")
http.setHeader("sec-fetch-mode", "navigate")
http.setHeader("sec-fetch-site", "none")
http.setHeader("sec-fetch-user", "?1")
http.setHeader("upgrade-insecure-requests", "1")
http.setHeader("cookie", "down_ip=1")
http.downloadFile(post.dom + "/file/" + post.url, "/sdcard/Pictures/11.exe")
上次更新: 2024/11/06, 21:21:50