第三方接口该如何调用
众所周知,通过ajax调用第三方接口通常会出现跨域的问题,这是浏览器基于同源策略的保护机制。对于跨域问题,有很多解决的办法,网上有一大堆,但都是基于同一个应用系统,或者前后台虽然分离,但其前后台的程序组成一个工程,也就是说跨域问题通常需要改后台代码,而第三方接口没有提供后台代码,所以无法使用常用的方法解决跨域问题。通过近半天的探索:得出以下两种比较常见的调用接口的方法,一种使用的是form表单,另一种使用Java
(1)form表单提交(此方法在Android端不适用),form的提交不存的跨域的问题,所以可以考虑使用form的action方法来解决。
<!DOCTYPE html>
<html>
<script src="jquery.js"></script>
<body><form action="http://10.24.19.64:8081/DataCenter/service/hadoop/hdfs/download" method="get">
First name:<br>
<button type="button" id="btn2">下载一个zip(方法2)</button>
</form> <p>如果您点击提交,表单数据会被发送到名为 demo_form.asp 的页面。</p>
<script>$("#btn2").click(function(){var $eleForm = $('<form method="get" action="http://10.24.19.64:8081/DataCenter/service/hadoop/hdfs/download" >'+'<input type="text" name="src" value="rootdir/hxywxtData/文件名中文乱码3.docx">'+'<input type="text" name="user" value="hxadmin">'+'</form>');$(document.body).append($eleForm);//提交表单,实现下载$eleForm.submit();
});
</script>
</body>
</html>
(2)通过Java代码调用(Android端适用)
public void downLoad(JSONObject jsonObj) throws JSONException {String localFileName = jsonObj.getString("filepaths");String target = jsonObj.getString("target");String urlPath = "http://10.24.19.64:8081/DataCenter/service/hadoop/hdfs/download?src=rootdir/hxywxtData/"+localFileName+"&user=hxadmin";String httpRes = null;String callback = jsonObj.getString("callback");try {URL url = new URL(urlPath);try {HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");conn.setDoOutput(true);conn.setDoInput(true);InputStream is = conn.getInputStream();String cacheDir = context.getExternalCacheDir().getPath();String full = cacheDir+"/"+target;//构造一个字符流缓存File file = new File(full);FileOutputStream fos = new FileOutputStream(file);byte[] buffer = new byte[1024];String str = "";int len = 0;while ((len = is.read(buffer)) != -1) {fos.write(buffer,0,len);}FileInputStream fis = new FileInputStream(full);while( fis.read(buffer) > 0){String strBuff = new String(buffer).substring(0,5);if (strBuff.equals("false")){webviewpost("0",callback);return;}}//关闭流is.close();//断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。//固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。conn.disconnect();webviewpost(full,callback);// System.out.println("完整结束");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
对于下载还可以使用window.open()方法,当然这个应该只能用在PC端。
第三方接口该如何调用相关推荐
- java第三方接口对接_调用多个第三方接口哪一种方案更好?
目的 用户在下单的时候,会调用我们的后台服务器,我们的后台服务器又会根据不同渠道调用第三方下单接口,完成整个下单流程,但是第三方下单接口可能突然出问题或者不支持,所以目前我们每一种渠道都配置了好几种备 ...
- http方式调用第三方接口
java如何调用对方http接口(II) - 流年煮雪 - 博客园 纯Java api HttpURLConnection Java调用外部接口_CJD的博客-CSDN博客_调用外部接口 纯Java ...
- 调用第三方接口缴费的通用逻辑
下面是我总结的调用第三方接口缴费的通用逻辑 代码逻辑如下: 代码示例: public RestDTO<BaseDTO> charge(Param param)throws Exceptio ...
- java 异常补偿解决_第三方接口调用异常补偿机制实现实例记录
背景: 我们的组件(简称A),在业务链中属于数据支撑节点.其中与组件B存在接口同步数据的直接关系(API接口直接调用进行数据交互) 问题: 我们的上游有另一个组件C(带有界面),调用A(us)进行数据 ...
- 为什么调用webservice接口只有 string arg0_快速开发平台中关于支持第三方接口开发的指导
说明: 本示例中的代码和截图可能和您现在手中的版本不同,但操作思路一样. 以下例子要自己写代码,是写死的那种代码类型,请根据自己实际业务编写代码只是作为参考,不能直接调用 背景介绍 表单或者列表部分数 ...
- php 自己封装一个调用第三方接口的函数
①在php.ini中开启php_curl扩展(必须开启) ②建议在php.ini中开启php_openssl扩展(本身不是curl必须的,是调用一些第三方接口需要的 ③如果以上操作重启apache后, ...
- 前端调用第三方接口跨域问题(淘宝)
前端调用第三方接口跨域问题 百度了好久,大部分的文章都前篇一律的说jsonp跨域,要不就是说配置CROS.看到那种文章出处应该都是一家,心好累.首先来说淘宝目前的接口是不支持jsonp请求的,配置CR ...
- springboot+调用支付宝第三方接口(沙箱环境)
springboot+调用支付宝第三方接口(沙箱环境) 大神勿喷!! 网址:https://developers.alipay.com/platform/developerIndex.htm 沙箱环境 ...
- 与第三方接口调用时白名单功能
近一年来一直做与其他方做接口方面的工作.做接口肯定就会涉及到一些白名单.授权.验证方面的问题.这里看一下白名单问题. 做过一个dll插件的接口,方式是我们把此dll发给第三方,第三方将此dll放到他们 ...
最新文章
- 微软企业服务部华东区招聘顾问/架构师/.NET高级开发员
- mysql中文乱码问题的解决方案
- Windows 技巧篇-通过“控制面板-程序和附件“查看程序安装位置实例演示
- 云服务器Linux jdk安装详解(centos8)
- 常见的保险种类,险种分类介绍
- PHP各种魔术方法测试
- Go 内存对齐的那些事儿
- RGB 转 YUV 算法
- os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
- 服务器bios修改uefi,服务器 uefi bios设置
- 红橙Darren视频笔记 单例模式 volatile简析 ConcurrentModificationException
- VUE axios发送cookie
- js typeof instanceof
- 分享一份适合练手的软件测试实战项目
- redis 默认过期策略_redis 过期策略
- logit回归模型的参数估计过程_LOGISTIC模型参数估计及预测实例.pdf
- jsonp跨域请求原理
- A-Z,所有汽车品牌完整json格式
- 如何避免数据湖变成数据沼泽
- Maximum Absurdity(dp思想+前缀和)