【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询
作者:iamlasong
1、接口说明
通过互联网訪问,运单跟踪信息查询接口基于HTTP协议开发,接口为RESTFul风格的Web Service,信息交互过程为用户按我方提供的web service地址进行调用,我方接到调用请求后,为用户返回JSON格式组织的数据信息。用户根据约定的接口规范对数据进行解析。
接口调用为HTTP请求的方式,每一次由用户发起的HTTP请求,须要设置验证信息,详细方法是,在HTTP Header部分添加version及authenticate属性,属性值在联调測试之前由总部提供。
接口调用地址:http:// IP:Port/invoke/path/{mail_num}
接口调用方式:HTTP GET方式,通过HTTP GET发起请求,使用真实邮件号替换{mail_num}
编码格式:UTF-8
接口返回数据格式:
{"traces":[{"acceptTime":"2011-11-2417:55:00","acceptAddress":"上海邮政速递物流长宁经营部","remark":"收寄"},{"acceptTime":"2011-11-2417:59:00","acceptAddress":"上海邮政速递物流长宁经营部","remark":"离开处理中心,发往上海市邮政公司邮政速递局"},{"acceptTime":"2011-11-2423:54:38","acceptAddress":"上海市","remark":"到达处理中心,来自上海邮政速递物流长宁经营部"},{"acceptTime":"2011-11-2500:17:42","acceptAddress":"上海市","remark":"离开处理中心,发往USSFOF"},{"acceptTime":"2011-12-0507:41:00","acceptAddress":"美国
94704","remark":"到达投递局"},{"acceptTime":"2011-12-0511:07:00","acceptAddress":"美国94703","remark":"妥投"}]}
acceptTime表示处理时间
acceptAddress表示处理地点
remark表示处理动作
2、查询界面
3、查询结果
4、程序实现
<pre name="code" class="vb">Dim tt, stime(80), saddr(80), state(80) As String Public Sub get_data()
'
Dim HttpReq As Object
Dim i, k, kk, row1 As Integer lineno = [A65536].End(xlUp).Row '行数
Range("B2:B" & lineno).ClearContents
'lineno = ActiveSheet.UsedRange.Rows.Count
Set HttpReq = CreateObject("MSXML2.XMLHTTP.3.0") row1 = 2
maxrow = Sheets("查询结果").UsedRange.Rows.Count
If maxrow >= 2 Then
Sheets("查询结果").Range("A2:D" & maxrow).ClearContents
End If
For i = 2 To lineno
mail = Cells(i, 1)
If mail = "" Then Exit For
'以下的<span style="font-family: Arial; ">IP:PORT要换成真实地址和port</span>
HttpReq.Open "Get", "http:// IP:Port/invoke/path/" & LTrim(mail), False
'以下的验证属性參数pppppppp1,2换成真实的属性值
HttpReq.setRequestHeader "Authenticate", "pppppppp1"
HttpReq.setRequestHeader "Version", "pppppppp2" HttpReq.send
'MsgBox HttpReq.getAllResponseHeaders
'MsgBox HttpReq.responseText kk = get_trace(HttpReq.responseText)
Cells(i, 2) = tt
Sheets("查询结果").Cells(row1, 1) = mail
For k = 1 To kk
Sheets("查询结果").Cells(row1, 2) = stime(k)
Sheets("查询结果").Cells(row1, 3) = saddr(k)
Sheets("查询结果").Cells(row1, 4) = state(k)
row1 = row1 + 1
Next k
If CInt((lineno - i) / 10) * 10 = lineno - i Then
Application.StatusBar = "剩余邮件数:" & lineno - i
End If Next i Sheets("查询结果").Activate
msg = MsgBox("邮件批量查询完成,共查询" & i - 3 & "个邮件!", vbOKOnly, "AHEMS:iamlaosong") End Sub
'函数,从字符串中取出轨迹信息,返回条数
Function get_trace(mystring As String) As Integer
Dim m1, m2, m3, m4, n, sn As Integer
Dim buf As String buf = mystring
sn = 1
tt = "0"
For n = 1 To 80
m1 = InStr(sn, buf, "acceptTime", vbTextCompare)
If m1 = 0 Then Exit For
m2 = InStr(sn, buf, "acceptAddress", vbTextCompare)
m3 = InStr(sn, buf, "remark", vbTextCompare)
m4 = InStr(sn, buf, "}", vbTextCompare)
stime(n) = Mid(buf, m1 + 13, 20)
saddr(n) = Mid(buf, m2 + 16, m3 - m2 - 19)
state(n) = Mid(buf, m3 + 9, m4 - m3 - 10)
sn = m4 + 2
Next n If state(n - 1) = "妥投" Then tt = "1"
get_trace = n - 1
End Function
【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询的更多相关文章
- 【VBA研究】如何用Base64 编解码方法实现简单的加解密
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码,将数据变成字符串实现文本传输.由于编码简单,所以很容易实现,代码也是现成的.利用这个编码规则可以实现简单的加解密.编解码方 ...
- 基于Lumisoft.NET组件,使用IMAP协议收取邮件
在早期一直使用Lumisoft.NET组件来进行邮件的处理查找,对于邮件的处理非常方便,之前在随笔<基于Lumisoft.NET组件的POP3邮件接收和删除操作>中也介绍过基于POP3和S ...
- 使用 EWS(Exchange Web Service)协议读取邮件、发送邮件
问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeou ...
- 【Python3】POP3协议收邮件
初学Python3,做一个email的例子,虽然知道做的很渣渣,还是分享一下吧 POP3协议 POP3全称Post Official Protocol3,即邮局协议的第三个版本,它规定了怎样将个人计算 ...
- 【VBA研究】变量定义的类型和实际赋值类型
作者:iamlaosong VBA中变量能够先定义后使用,也能够不定义直接使用.假设模块前面加了Option Explicit语句,则变量必须先定义后使用. 只是.实验发现.VBA对变量类型没有进行严 ...
- 【VBA研究】Excel VBA利用ADODB访问数据库使用小结
[转自] http://blog.csdn.net/iamlaosong/article/details/18043433 作者:iamlaosong ▲连接Oracle数据库 Set cnn = C ...
- 【VBA研究】工作表自己主动筛选模式检測
作者:iamlaosong 用VBA程序处理Excel数据文件.用户的数据文件有时处于自己主动筛选模式,往往导致数据处理不对.为此,须要检測工作表是否处于该模式,假设是,则去掉自己主动筛选.语句例如以 ...
- 【VBA研究】用VBA取得EXCEL随意列有效行数
作者:iamlaosong 用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的.须要通过參数设定才干知道,因此.我们编程的时候,就不能用这种语句取有效行数: linen ...
- 【VBA研究】查找目录以下全部文件的名称
作者:iamlaosong 目录里面保存有面单扫描的图像文件,文件名称为邮件号码.如今想收集这些邮件号码,由于量非常大,不可能一个一个的截取,仅仅能通过程序实现.假定,当前工作表B列里放的是存放这些图 ...
随机推荐
- Hibernate JPA 中配置Ehcache二级缓存
在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...
- 基于visual Studio2013解决算法导论之022队列实现(基于链表)
题目 基于链表的队列实现 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> ...
- win7删除桌面文件需要刷新才会消失(2种解决方法)
有没有遇到过这种情况,删除桌面文件没有效果,要点右键的刷新删除过的文件才会在桌面上消失!解决方法有两种: 第一种方法 点击"开始→运行",在对话框中输入"regedit& ...
- UVALive 5797 In Braille
题目 比赛总结 题意:给出1-9的盲文,每种盲文都是2×3的点阵,有些点是凸起的用*表示,其余的用.表示.要进行两种操作,1 把盲文变成数字,2 把数字变成盲文 解法:按规则模拟....注意读入的每个 ...
- 非确定有限状态自动机的构建(二)——将CharVal转换为NFA
保留版权,转载注明出处:潘军彪的个人博客(http://blog.csdn.net/panjunbiao/article/details/9378933) 将上下文无关文法读入内存之后,可以将它转换成 ...
- cocos2d-x plist文件各个属性的含义
plist文件是小图在合并成大图的时候生成的配置文件,所以须要由大图+plist文件能够全然还原出小图. 合图后的大图整体尺寸面积一般要小于原来的小图面积之和,是由于合图中会去掉小图周围的透明像素(当 ...
- Bmp 解析 (2013-09-09 19:30:41)
bmp 图片结构 位图格式(bmp)是显示图片的基本格式,其文件扩展名为*.BMP. 在Windows下,任何各式的图片文件(包括视频播放)都要转化为位图才能显示出来,其他各种格式的图片文件是在位图格 ...
- 解决项目打包过程检出项目出现 svn:e15500错误
svn:E15500 is already a working copy for a different url 原因:文件夹含有svn信息的隐藏文件未删除 解决办法:把该文件夹删除掉,然后重新建立同 ...
- 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)
2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...
- 03-IOSCore - XML及解析、Plist
一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...