Atitit 通用服务端代理接口 转接口 attilax总结
Atitit 通用服务端代理接口 转接口 attilax总结
1.1. 主要使用场景: 强行跨域,方便界面与后端的数据调用 1
1.2. 原理:使用httpclient转发接口数据。 1
1.3. 注意::元接口的数据编码最好不用动,直接stream转换。。 1
1.4. 大概流程与算法 1
1.5. 核心代码 2
1.6. 范例与使用说明,天气接口,需要使用本地html文件读取其他域名的rest api 4
目前我们自己的 通用接口基本可以满足数据查询,数据更新删除的这些场合了,甚至可以做到主要靠前端人员就可以做很多项目了(还缺少一个通用excel导出功能)。。
但面对别人提供的接口,还需要做一些转换。。因为默认html ajax是读取不了第三方域名地址的接口的。
1.1. 主要使用场景: 强行跨域,方便界面与后端的数据调用
对方给的接口没有跨域设置。导致不能直接在界面使用。。
优先让对方开通跨域设置。。如果不能开通,比如第三方接口,或者对方不愿意开通此设置。
就需要使用服务端代理做个转接口。。
1.2. 原理:使用httpclient转发接口数据。
1.3. 注意::元接口的数据编码最好不用动,直接stream转换。。
未来版本规划::: 支持编码转换 gbk utf8等。
支持
1.4. 大概流程与算法
/Proxy.java 入口
HttpUtil发送http请求
然后stream交换
1.5. 核心代码
/atiplat_ee/src/com/attilax/rest/Proxy.java
@Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { //String url = "http://www.weather.com.cn/data/cityinfo/101250101.html"; HttpUtil.sendGet2outStream(req.getParameter("url"), res.getOutputStream()); |
}
/atiplat_ee/src/com/attilax/net/HttpUtil.java
public static void sendGet2outStream(String url, String param, OutputStream outStream) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 鎵撳紑鍜孶RL涔嬮棿鐨勮繛鎺� URLConnection connection = realUrl.openConnection(); // 璁剧疆閫氱敤鐨勮姹傚睘鎬� connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 寤虹珛瀹為檯鐨勮繛鎺� connection.connect(); // 鑾峰彇鎵�鏈夊搷搴斿ご瀛楁 Map<String, List<String>> map = connection.getHeaderFields(); // 閬嶅巻鎵�鏈夌殑鍝嶅簲澶村瓧娈� for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 瀹氫箟 BufferedReader杈撳叆娴佹潵璇诲彇URL鐨勫搷搴� InputStream inputStream = connection.getInputStream(); StreamUtil.streamEx(inputStream, outStream); |
/atiplat_ee/src/com/attilax/io/StreamUtil.java
public static void streamEx(InputStream inStream, OutputStream outStream) { int bytesum = 0; // int byteread = 0; try { int byteread; byte[] buffer = new byte[1204]; int length; while ((byteread = inStream.read(buffer)) != -1) { bytesum += byteread; // System.out.println(bytesum); outStream.write(buffer, 0, byteread); } outStream.flush(); } catch (Exception e) { ExUtil.throwExV2(e); } try { inStream.close(); } catch (Exception e) { // TODO: handle exception } try { outStream.close(); } catch (Exception e) { // TODO: handle exception } } |
1.6. 范例与使用说明,天气接口,需要使用本地html文件读取其他域名的rest api
http://www.weather.com.cn/data/cityinfo/101250101.html
返回
{"weatherinfo":{"city":"长沙","cityid":"101250101","temp1":"11℃","temp2":"22℃","weather":"多云","img1":"n1.gif","img2":"d1.gif","ptime":"18:00"}}
转接口使用
http://localhost:8088/proxy?url=http%3A%2F%2Fwww.weather.com.cn%2Fdata%2Fcityinfo%2F101250101.html
提供一个url参数,指明原接口的url即可。。注意莫忘urlencode
返回
{"weatherinfo":{"city":"长沙","cityid":"101250101","temp1":"11℃","temp2":"22℃","weather":"多云","img1":"n1.gif","img2":"d1.gif","ptime":"18:00"}}
作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher
捕鸟王"Bird Catcher kok 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王
简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴
全名::Emir Attilax Akbar bin Mahmud bin attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当 阿尔 拉帕努伊
常用名:艾提拉(艾龙), EMAIL:1466519819@qq.com
头衔:uke总部o2o负责人,全球网格化项目创始人,
uke交友协会会长 uke捕猎协会会长 Emir Uke部落首席大酋长,
uke宗教与文化融合事务部部长, uke宗教改革委员会副主席
uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,
uke 首席cto 软件部门总监 技术部副总监 研发部门总监主管 产品部副经理 项目部副经理 uke科技研究院院长uke软件培训大师
uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人
Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长
uke终身教育学校副校长 Uke医院 与医学院方面的创始人
uec学院校长, uecip图像处理机器视觉专业系主任 uke文档检索专业系主任
Uke图像处理与机器视觉学院首席院长
Uke 户外运动协会理事长 度假村首席大村长 uke出版社编辑总编
转载请注明来源:attilax的专栏 ?http://blog.csdn.net/attilax
--Atiend v8
Atitit 通用服务端代理接口 转接口 attilax总结相关推荐
- 服务端(后端)接口自动化测试框架
服务端(后端)接口自动化测试框架,梳理如下: 如有问题请评论区下方留言,看到会及时回复.(分层中再加一个allure-results文件夹)
- Nginx_01_Nginx三大基础功能(静态服务器、虚拟主机、负载均衡/服务端代理)
文章目录 一.前言 二.Nginx三大功能--HTTP服务器 三.Nginx三大功能--虚拟主机 3.1 虚拟主机 3.2 Nginx配置文件的结构 3.3 Nginx三种虚拟主机方式--基于ip的虚 ...
- Vercel 配置服务端代理
解决问题 Vercel 是一个用于静态站点和无服务器功能的云平台,非常适合您的工作流.它使开发人员能够托管即时部署.自动扩展.无需监督.无需配置的网站和web服务. Vercel 部署的站点是 HTT ...
- java服务端开发支付宝支付接口,网页支付与app支付
s 前言 在开发的过程中,不可避免的都需要使用支付功能,本文档主要给大家分享,自己的一次支付宝开发时的经历.支付宝开发,对于个人开发者而言相对于其他支付来说相对比较友好,因为有沙箱环境支持我们在开发阶 ...
- linux服务端代理设置与linux下载工具
sock5代理服务端 https://www.cnblogs.com/marklove/p/9669025.html 有时候ss5启动不起来,查看当前状态,提示 #service ss5 status ...
- jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...
目录: [阐述]:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的. [步 ...
- 魔坊APP项目-15-邀请好友(业务逻辑流程图、服务端提供邀请好友的二维码生成接口、客户端通过第三方识别微信二维码,服务端提供接口允许访问、App配置私有协议,允许第三方应用通过私有协议,唤醒APP)
邀请好友 1.业务逻辑流程图 客户端提供点击"邀请好友"以后的页面frame,html/invite.html,代码: <!DOCTYPE html> <html ...
- 性能服务器图片介绍大图,服务端图片图片上传接口性能压测总结
服务端图片上传接口性能压测总结 一.性能测试时需要关注点 用户操作的相应时间 服务器资源使用情况是否合理 应用服务器和数据库资源使用是否合理 系统能否实现扩展 系统最多支持多少用户访问.系统最大业务处 ...
- 魔坊APP项目-18-种植园,基于支付宝提供的沙箱测试环境开发支付接口、服务端, 处理支付结果的同步通知和异步通知、修复页面底部菜单无法被点击的BUG
种植园 一.基于支付宝提供的沙箱测试环境开发支付接口 沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info 开发文档: ht ...
- 魔坊APP项目-21-种植园,宠物栏的功能实现、服务端提供显示宠物的api接口、客户端中展示宠物栏和宠物列表以及饱食度、宠物道具的使用
种植园 一.宠物栏的功能实现 1. 宠物的显示 2. 宠物的使用 3. 宠物的饱食度 4. 宠物的开锁 1.服务端提供显示宠物的api接口 socket.py,代码 ... import math f ...
最新文章
- 职校中的计算机学的是什么,职校计算机专业主要学什么课
- select2 ajax demo,Select2下拉框示例
- SUM and REPLACE
- linux学习工作记录----配置基于ip的虚拟主机
- 拿了年终奖后,发现自己又拖后腿了?对不起,可能事实并没有那么糟糕...
- failed to keep to the max pss of 66560
- android广告页白屏_Android 启动页面与广告页面的实现-Go语言中文社区
- java 蓝桥杯算法训练 最大值与最小值的计算(题解)
- 2018年山西省环境空气质量综合指数平均下降10.8%
- YISplashScreen
- Lightroom 教程,如何将照片从 Lightroom 移至Photoshop,在 Ps 中合并图像?
- vmware服务器虚拟机重新安装系统教程,在VMware虚拟机装系统教程_vmware装系统_U盘工具_装系统教程_课课家...
- oracle索引失效解决,Oracle索引失效的原因
- element中Tree组件更新后不自动收起
- 纯CSS3绘制的小猫笑脸动画
- 微信公众号开发之配置开发服务器
- 【论文快读】DeepFool(2016)
- swift学习之数组、字典和字符串
- 代码的侵入式和非侵入式是什么意思
- 运筹学研究者关注的Github和CSDN账号
热门文章
- mysql查看autocommit_我所理解的MySQL(四)事务、隔离级别及MVCC
- 【C++】 29_类中的函数重载
- 如何修复MySQL配置文件?
- overflow-x和文字超出...显示
- 使用Windows Embedded Source Tools for Bluetooth Technology简化蓝牙开发
- [置顶] NYOJ117 求逆序数
- C++中struct和class的区别 [zz]
- 如何优化ASP.NET网站的性能
- 设计模式-第一篇之单例模式
- loj #6122. 「网络流 24 题」航空路线问题