众所周知,通过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端。

第三方接口该如何调用相关推荐

  1. java第三方接口对接_调用多个第三方接口哪一种方案更好?

    目的 用户在下单的时候,会调用我们的后台服务器,我们的后台服务器又会根据不同渠道调用第三方下单接口,完成整个下单流程,但是第三方下单接口可能突然出问题或者不支持,所以目前我们每一种渠道都配置了好几种备 ...

  2. http方式调用第三方接口

    java如何调用对方http接口(II) - 流年煮雪 - 博客园 纯Java api HttpURLConnection Java调用外部接口_CJD的博客-CSDN博客_调用外部接口 纯Java  ...

  3. 调用第三方接口缴费的通用逻辑

    下面是我总结的调用第三方接口缴费的通用逻辑 代码逻辑如下: 代码示例: public RestDTO<BaseDTO> charge(Param param)throws Exceptio ...

  4. java 异常补偿解决_第三方接口调用异常补偿机制实现实例记录

    背景: 我们的组件(简称A),在业务链中属于数据支撑节点.其中与组件B存在接口同步数据的直接关系(API接口直接调用进行数据交互) 问题: 我们的上游有另一个组件C(带有界面),调用A(us)进行数据 ...

  5. 为什么调用webservice接口只有 string arg0_快速开发平台中关于支持第三方接口开发的指导

    说明: 本示例中的代码和截图可能和您现在手中的版本不同,但操作思路一样. 以下例子要自己写代码,是写死的那种代码类型,请根据自己实际业务编写代码只是作为参考,不能直接调用 背景介绍 表单或者列表部分数 ...

  6. php 自己封装一个调用第三方接口的函数

    ①在php.ini中开启php_curl扩展(必须开启) ②建议在php.ini中开启php_openssl扩展(本身不是curl必须的,是调用一些第三方接口需要的 ③如果以上操作重启apache后, ...

  7. 前端调用第三方接口跨域问题(淘宝)

    前端调用第三方接口跨域问题 百度了好久,大部分的文章都前篇一律的说jsonp跨域,要不就是说配置CROS.看到那种文章出处应该都是一家,心好累.首先来说淘宝目前的接口是不支持jsonp请求的,配置CR ...

  8. springboot+调用支付宝第三方接口(沙箱环境)

    springboot+调用支付宝第三方接口(沙箱环境) 大神勿喷!! 网址:https://developers.alipay.com/platform/developerIndex.htm 沙箱环境 ...

  9. 与第三方接口调用时白名单功能

    近一年来一直做与其他方做接口方面的工作.做接口肯定就会涉及到一些白名单.授权.验证方面的问题.这里看一下白名单问题. 做过一个dll插件的接口,方式是我们把此dll发给第三方,第三方将此dll放到他们 ...

最新文章

  1. 微软企业服务部华东区招聘顾问/架构师/.NET高级开发员
  2. mysql中文乱码问题的解决方案
  3. Windows 技巧篇-通过“控制面板-程序和附件“查看程序安装位置实例演示
  4. 云服务器Linux jdk安装详解(centos8)
  5. 常见的保险种类,险种分类介绍
  6. PHP各种魔术方法测试
  7. Go 内存对齐的那些事儿
  8. RGB 转 YUV 算法
  9. os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
  10. 服务器bios修改uefi,服务器 uefi bios设置
  11. 红橙Darren视频笔记 单例模式 volatile简析 ConcurrentModificationException
  12. VUE axios发送cookie
  13. js typeof instanceof
  14. 分享一份适合练手的软件测试实战项目
  15. redis 默认过期策略_redis 过期策略
  16. logit回归模型的参数估计过程_LOGISTIC模型参数估计及预测实例.pdf
  17. jsonp跨域请求原理
  18. A-Z,所有汽车品牌完整json格式
  19. 如何避免数据湖变成数据沼泽
  20. Maximum Absurdity(dp思想+前缀和)

热门文章

  1. 说极路由牛逼的人们,你们用过Tomato DualWAN吗?(三)
  2. via浏览器 html代码,网页黑色加强的css代码
  3. Linux---虚拟机安装Linux系统与联网实现
  4. python大学生社团管理系统
  5. wifi 小程序 透传_微信小程序之一键连接wifi
  6. 计算机考试感受作文,考试后的感受作文(通用10篇)
  7. Jsoup 解析Html源码实例
  8. Choco-slover的使用
  9. 转载:Java语言学习
  10. 教学管理系统的设计与实现(一)(源码,以及毕业论文)