IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-09-07-OSB学习(接口下载文件--流) -> 正文阅读

[网络协议]2021-09-07-OSB学习(接口下载文件--流)

什么是使用流文件传输

我们在java学习的时候学到过,数据是以流的形式传输的。同样的,我们可以使用接口来进行数据的传输,这些数据可以是图片,文字,视频等。

简单来说,传输就是把文件获取成流,然后把流放入管道中,然后通过调用来获取这个流文件。

1、我们要干什么

今天的内容就是研究一下关于文件通过什么样的方式进行传输的。

今天的接口要实现的功能是:
1、控制台通过执行PL显示流文件信息
2、通过postman调用接口然后实现图片的下载
3、通过postman传递一个请求,然后通过请求设置下载的文件的名字
4、直接在浏览器输入接口地址,然后进行文件下载
5、直接在浏览器上输入接口地址(要携带参数),然后进行文件下载
上面的是图片,我们下面就搞一下视频
1、通过postman调用接口实现视频的下载

2、接口开发

2.1、控制台通过执行PL显示流文件信息

2.1.1、创建基本的目录结构

在这里插入图片描述

2.1.2、打开项目,然后创建BS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后要设置一个信息的地址,这个地址可以是图片也可以是其他的
我这里设置的是一张图片

地址是这个

http://tse1-mm.cn.bing.net/th/id/R-C.53e7e06bd0322cc0f2873b29aeb919e0?rik=lVfLPnUjuDg6DA&riu=http%3a%2f%2f5b0988e595225.cdn.sohucs.com%2fimages%2f20190116%2ffc855616fb8041a49ede6c21d48e9bd0.jpeg&ehk=wZqTGpNw99SnqXOCq%2btX2i547h%2bhDrTitxBZ%2fwpoDJs%3d&risl=&pid=ImgRaw&r=0
有些网站的图片的地址是不可以访问的,如果我的这个你访问不到,那就直接去搜一张图片然后修改为http协议的就可以了
在这里插入图片描述
记得一定一定要是http协议的
在这里插入图片描述
在这里插入图片描述

2.1.3、创建PL和PS

直接拖拽BS左上角的小箭头就可以拖出来一个pl
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.4、双击进入PL,然后设置PL的组件

我们在这个地方是很简单的,只需要添加一个
Transport Header组件就可以了
在这里插入图片描述
设置组件的参数

在这里插入图片描述

2.1.5、设置完成,直接进行测试

将jar包直接导出,然后直接打开运行
在这里插入图片描述
可以看到响应文档里面写了一堆16进制的数组
这就是一个数据流文件
这样表示我们已经获取了这个图片地址所对应的图片的流文件

我们可以去查看调用跟踪是不是正常的
在这里插入图片描述
这样我们就完成了这个基础的流文件接口

那么如何把这个文件下载到我们自己的电脑上呢,我们继续往下看

2.2、网页直接浏览,然后进行文件下载

通过之前的学习,我们知道我们写的这个接口是会暴露到外界一个地址的,也就是我们PS的地址

所以我们直接去使用ps的地址来进行访问网页

如果不知道地址在哪里可以通过查看控制台来找到这个地址
在这里插入图片描述

我的地址就是这个

http://192.168.65.145:8011/DownLoadProject/ProxyServices/Pic_1_PS

其实这个PS 的地址的后半段就是我们文件在jar包里面的路径

直接进行访问
在这里插入图片描述
可以看到我们每次执行一次,都会刷新一次界面,然后下载列表也会多一个文件
打开文件查看
在这里插入图片描述
就可以看到,我们已经把这个图片下载到了电脑上
浏览器不同,下载的方式也不同
上面的是EDG
下面给大家展示火狐的访问

在这里插入图片描述
和EDG不同,火狐会多一个确认的窗口

那么如何同过接口调用的方式进行下载呢
我们这里就要使用postman来进行接口调用
继续往下看看吧

2.3、通过postman调用接口实现图片下载

打开postman
然后输入刚刚我们访问浏览器的地址
注意设置post请求
在这里插入图片描述
然后直接调用接口
我们会发现,响应框里面全是看不懂的乱码
在这里插入图片描述
我们查看一下响应的headers

在这里插入图片描述
虽然显示是调用成功的,但是我们并没有看到我们的文件下载到我们的电脑上

呢么我们如何下载这个文件呢

这里需要使用我们之前没有用到过的调用方式:发送并下载(Send and Download)

在发送请求的旁边有一个小箭头,下面会显示我们这里用到的命令
在这里插入图片描述
直接点击就可以了
可以看到,这个时候,也是会弹出来一个窗口,给用户展示下载的文件存放的位置

在这里插入图片描述
我这里就直接存放在桌面了
点击保存
在这里插入图片描述
就会看到我们的桌面多了一个照片,和之前一样,也是可以直接打开的

2.4、通过请求设置下载的文件的文件名

上面说了很多次如何设置下载的文件的文件名,下面就跟大家展示如何设置这个文件的文件名。
我们这里就新建一个和上面一样的接口用来开发了。

2.4.1、创建PL和PS

在这里插入图片描述
在这里插入图片描述
注意设置请求信息

2.4.2、设置PL

双击进入PL
在这里插入图片描述
在这里插入图片描述
放置一个routing
在这里插入图片描述
设置路由的地址
这里的路由就直接设置之前调用成功的BS就可以了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置参数
在这里插入图片描述

2.4.3、获取请求体中的文件名

我在这里就直接获取了,使用xml的稍后会说到
在这里插入图片描述

2.4.4、修改文件输出的名字

打开Transport Header组件
然后使用拼接的方法,把这个字符串和我们的获取的名字进行拼接

如果一直弹窗,就保存一下在进行操作

在这里插入图片描述
点击value

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
选择concat

在这里插入图片描述
使用方法,然后把这两个字符串拼接起来。
在这里插入图片描述

2.4.5、接口测试

我们直接在控制台进行操作
在这里插入图片描述
调用成功
在这里插入图片描述
查看调用跟踪
在这里插入图片描述
我们调用postman再来测试一下
在这里插入图片描述
同样使用 发送并下载也是可以得到一张图片
在这里插入图片描述

这样就完成了这个简单的开发
那如果是xml格式的请求又如何获取这个文件名称呢

这里需要进行一层一层的获取你想要的到的数据所属的标签了。
具体的操作请看我的另一篇文章:
https://blog.csdn.net/h22407/article/details/120048941
在这里插入图片描述
这里需要注意的是如果想要发送一个xml形式的text数据且数据不唯一
就像这个一样
在这里插入图片描述
可以自己测试一下,如果直接写出来,就只能获取到最上面的那一层,下面的是获取不到的
所以我们需要包裹一层标签
像这样
在这里插入图片描述

2.4.6、已完成的接口展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其实和上面的是一样的,就是获取了一下数据
在这里插入图片描述

2.5、浏览器携带参数,下载文件

在我们之前的学习中,我们知道可以直接复制连接然后下载文件,那么我们如何让这个链接携带参数,然后完成下载的操作呢。

时间20210909.10.53

2.5.1、创建PL和PS

这里创建的操作我就不再赘述了哦,操作流程和之前是一样的。

2.5.2、设置PL接口的流程

1、先拉取一个routing组件然后关联到我们上面写过的 Pic_1_BS.bix

在这里插入图片描述

2、获取我们浏览器要输入的参数
这个参数就是我们在访问是链接里面的?后面的东西
这个在请求的时候是存放在inbound里面的
我们可以来看一下
这个链接发送的请求所对应的inbound就是下面的这个样子的
在这里插入图片描述
可以看出来,这个一层一层的和我们之前的获取outbound的形式是一样的,也是要用斜杠来进行逐层查询的
这里有一点不同的地方就是我们是需要通过key来获取value的,也就是我们需要先获取name,然后再去获取我们的value的值

并且有一点:这里的获取和替换body的内容是不可以同时进行的,如果想查看自己获取的值是否是自己想要的,需要分开来做这个事情。

在这里插入图片描述 在这里插入图片描述
知道了这些以后我们就开始进行设置

对了replace只是为了去验证你是否能获取到正确的值
在这里其实是不需要多余的,所以我下面就不写了,如果感兴趣,可以自己去研究一下。

拉取一个ass插件,然后设置里面的参数,我这里的inbound是这样的一层一层的,这里的value就可以通过

[@name='变量名称']/@value 来获取

下面的报红就是命名空间的问题,添加一下就可以了。
在这里插入图片描述
在这里的uri就是我们刚刚看到的inbound里面的地址
如果子标签没有写xmln是什么,那就表示当前标签的命名空间和父标签是一样的。

在这里插入图片描述
红色框框里面的就是uti,前面的prefix可以随便写
在这里插入图片描述
另一个也是一样的

3、获取value并赋值给fileName

请添加图片描述
请添加图片描述

4、修改文件名称

这个和之前的是一样的。

请添加图片描述

最后的PL就是这个样子的:

在这里插入图片描述

2.5.3、测试接口

我们在这里就直接使用postman去测试了
在这里插入图片描述

可以看到,我们获取到了信息,并且也能获取到我们的流文件

在这里插入图片描述

2.5.4、网页测试

这次我们用火狐浏览器来进行测试

在这里插入图片描述

在火狐直接打开也是可以看到我们的图片的。

在这里插入图片描述

这样我们就完成了一个在浏览器传递参数然后下载文件的操作。

2.6、实现视频下载

既然我们的图片可以下载,是不是视频也是可以通过我们的流来实现下载呢。

我们接下来就试试看咯

2.6.1、在网页找一个时间短一点的视频的文件

http://video-qn.51miz.com/preview/video/00/00/12/18/V-121890-8E465F26.mp4

这个网站恰好可以满足需求哈哈,运气太好了哈哈

好我们资源找到了,就来测试一下吧

2.6.2、设置BS,PL,PS

在这里插入图片描述在这里插入图片描述

这个TH组件依旧是我们熟悉的设置的方式

然后我们直接进行测试

测试的时候一定要先去测试我们的BS是否能接通

打开bs然后直接进行测试就可以
在这里插入图片描述
在程序进行到30秒的时候,会报一个错误
在这里插入图片描述
这是错误的解释
在这里插入图片描述
这我们就可以知道这个是一个传输时出现的错误
也就是传输的方式的错误
我们直接用postman去测试一下
在这里插入图片描述

可以看到目标MP4文件的传输格式是直接进行传输
而我们的传输协议默认是这样的
在这里插入图片描述
在这里插入图片描述
分块流传输模式
我们把这个默认的取消掉就可以了。

直接取消勾选就可以了
在这里插入图片描述
要记得保存然后再激活
激活以后再去检查一下看是不是已经修改了

在这里插入图片描述
这样表示就是已经修改了。
再次测试

在这里插入图片描述
在这里插入图片描述
再次进行send and Download测试
在这里插入图片描述
可以看到这个弹窗,表示这个就可以下载了。
在这里插入图片描述
点开以后也是正常的一个文件。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 11:12:15  更:2021-09-10 11:12:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:32:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码