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 ServletExceptionIOException {

//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总结相关推荐

  1. 服务端(后端)接口自动化测试框架

    服务端(后端)接口自动化测试框架,梳理如下: 如有问题请评论区下方留言,看到会及时回复.(分层中再加一个allure-results文件夹)

  2. Nginx_01_Nginx三大基础功能(静态服务器、虚拟主机、负载均衡/服务端代理)

    文章目录 一.前言 二.Nginx三大功能--HTTP服务器 三.Nginx三大功能--虚拟主机 3.1 虚拟主机 3.2 Nginx配置文件的结构 3.3 Nginx三种虚拟主机方式--基于ip的虚 ...

  3. Vercel 配置服务端代理

    解决问题 Vercel 是一个用于静态站点和无服务器功能的云平台,非常适合您的工作流.它使开发人员能够托管即时部署.自动扩展.无需监督.无需配置的网站和web服务. Vercel 部署的站点是 HTT ...

  4. java服务端开发支付宝支付接口,网页支付与app支付

    s 前言 在开发的过程中,不可避免的都需要使用支付功能,本文档主要给大家分享,自己的一次支付宝开发时的经历.支付宝开发,对于个人开发者而言相对于其他支付来说相对比较友好,因为有沙箱环境支持我们在开发阶 ...

  5. linux服务端代理设置与linux下载工具

    sock5代理服务端 https://www.cnblogs.com/marklove/p/9669025.html 有时候ss5启动不起来,查看当前状态,提示 #service ss5 status ...

  6. jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...

    目录: [阐述]:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的. [步 ...

  7. 魔坊APP项目-15-邀请好友(业务逻辑流程图、服务端提供邀请好友的二维码生成接口、客户端通过第三方识别微信二维码,服务端提供接口允许访问、App配置私有协议,允许第三方应用通过私有协议,唤醒APP)

    邀请好友 1.业务逻辑流程图 客户端提供点击"邀请好友"以后的页面frame,html/invite.html,代码: <!DOCTYPE html> <html ...

  8. 性能服务器图片介绍大图,服务端图片图片上传接口性能压测总结

    服务端图片上传接口性能压测总结 一.性能测试时需要关注点 用户操作的相应时间 服务器资源使用情况是否合理 应用服务器和数据库资源使用是否合理 系统能否实现扩展 系统最多支持多少用户访问.系统最大业务处 ...

  9. 魔坊APP项目-18-种植园,基于支付宝提供的沙箱测试环境开发支付接口、服务端, 处理支付结果的同步通知和异步通知、修复页面底部菜单无法被点击的BUG

    种植园 一.基于支付宝提供的沙箱测试环境开发支付接口 沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info 开发文档: ht ...

  10. 魔坊APP项目-21-种植园,宠物栏的功能实现、服务端提供显示宠物的api接口、客户端中展示宠物栏和宠物列表以及饱食度、宠物道具的使用

    种植园 一.宠物栏的功能实现 1. 宠物的显示 2. 宠物的使用 3. 宠物的饱食度 4. 宠物的开锁 1.服务端提供显示宠物的api接口 socket.py,代码 ... import math f ...

最新文章

  1. 职校中的计算机学的是什么,职校计算机专业主要学什么课
  2. select2 ajax demo,Select2下拉框示例
  3. SUM and REPLACE
  4. linux学习工作记录----配置基于ip的虚拟主机
  5. 拿了年终奖后,发现自己又拖后腿了?对不起,可能事实并没有那么糟糕...
  6. failed to keep to the max pss of 66560
  7. android广告页白屏_Android 启动页面与广告页面的实现-Go语言中文社区
  8. java 蓝桥杯算法训练 最大值与最小值的计算(题解)
  9. 2018年山西省环境空气质量综合指数平均下降10.8%
  10. YISplashScreen
  11. Lightroom 教程,如何将照片从 Lightroom 移至Photoshop,在 Ps 中合并图像?
  12. vmware服务器虚拟机重新安装系统教程,在VMware虚拟机装系统教程_vmware装系统_U盘工具_装系统教程_课课家...
  13. oracle索引失效解决,Oracle索引失效的原因
  14. element中Tree组件更新后不自动收起
  15. 纯CSS3绘制的小猫笑脸动画
  16. 微信公众号开发之配置开发服务器
  17. 【论文快读】DeepFool(2016)
  18. swift学习之数组、字典和字符串
  19. 代码的侵入式和非侵入式是什么意思
  20. 运筹学研究者关注的Github和CSDN账号

热门文章

  1. mysql查看autocommit_我所理解的MySQL(四)事务、隔离级别及MVCC
  2. 【C++】 29_类中的函数重载
  3. 如何修复MySQL配置文件?
  4. overflow-x和文字超出...显示
  5. 使用Windows Embedded Source Tools for Bluetooth Technology简化蓝牙开发
  6. [置顶] NYOJ117 求逆序数
  7. C++中struct和class的区别 [zz]
  8. 如何优化ASP.NET网站的性能
  9. 设计模式-第一篇之单例模式
  10. loj #6122. 「网络流 24 题」航空路线问题