作者: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协议实现邮件轨迹跟踪查询的更多相关文章

  1. 【VBA研究】如何用Base64 编解码方法实现简单的加解密

    Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码,将数据变成字符串实现文本传输.由于编码简单,所以很容易实现,代码也是现成的.利用这个编码规则可以实现简单的加解密.编解码方 ...

  2. 基于Lumisoft.NET组件,使用IMAP协议收取邮件

    在早期一直使用Lumisoft.NET组件来进行邮件的处理查找,对于邮件的处理非常方便,之前在随笔<基于Lumisoft.NET组件的POP3邮件接收和删除操作>中也介绍过基于POP3和S ...

  3. 使用 EWS(Exchange Web Service)协议读取邮件、发送邮件

    问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeou ...

  4. 【Python3】POP3协议收邮件

    初学Python3,做一个email的例子,虽然知道做的很渣渣,还是分享一下吧 POP3协议 POP3全称Post Official Protocol3,即邮局协议的第三个版本,它规定了怎样将个人计算 ...

  5. 【VBA研究】变量定义的类型和实际赋值类型

    作者:iamlaosong VBA中变量能够先定义后使用,也能够不定义直接使用.假设模块前面加了Option Explicit语句,则变量必须先定义后使用. 只是.实验发现.VBA对变量类型没有进行严 ...

  6. 【VBA研究】Excel VBA利用ADODB访问数据库使用小结

    [转自] http://blog.csdn.net/iamlaosong/article/details/18043433 作者:iamlaosong ▲连接Oracle数据库 Set cnn = C ...

  7. 【VBA研究】工作表自己主动筛选模式检測

    作者:iamlaosong 用VBA程序处理Excel数据文件.用户的数据文件有时处于自己主动筛选模式,往往导致数据处理不对.为此,须要检測工作表是否处于该模式,假设是,则去掉自己主动筛选.语句例如以 ...

  8. 【VBA研究】用VBA取得EXCEL随意列有效行数

    作者:iamlaosong 用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的.须要通过參数设定才干知道,因此.我们编程的时候,就不能用这种语句取有效行数: linen ...

  9. 【VBA研究】查找目录以下全部文件的名称

    作者:iamlaosong 目录里面保存有面单扫描的图像文件,文件名称为邮件号码.如今想收集这些邮件号码,由于量非常大,不可能一个一个的截取,仅仅能通过程序实现.假定,当前工作表B列里放的是存放这些图 ...

随机推荐

  1. Git简介及安装和简单配置

    首先需要清楚的是Git和GitHub的区别. Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了 ...

  2. 如何用 new 来动态开辟一个二维数组

    一般的做法是: int **p = new int*[m]; //m行n列型 for (i = 0; i < m; ++i) { p[i] = new int[n]; for (j = 0; j ...

  3. OpenBlas编译方法(体验msys下使用MingW)

    OpenBlas是一个优化的Blas库,基于GotoBlas21.13 BSD版,安装步骤如下: Windows下安装: 1. 在SourgeForge下载最新的OpenBlas库:http://so ...

  4. java 访问 mysql 数据库的字符集设置

    mysql是在linux下,java代码通过jdbc访问总是中文乱码.做过如下尝试: 1)修改 mysql的 my.cnf文件,设置 default-character-set等参数 2) 利用alt ...

  5. Mockito--完整功能介绍(转)

    public interface DBAccess { int delete(String moi,String moc) throws Exception; void create(String m ...

  6. python爬虫实战2百度贴吧爬html

    转自:http://blog.csdn.net/wxg694175346/article/details/8927832 import string, urllib2 #定义百度函数 def baid ...

  7. 180China丨the Agency for Brand Engagement and Experience

    180China丨the Agency for Brand Engagement and Experience Welcome to 180. Welcome to Creativity. Thank ...

  8. UNIX环境高级编程——网络基础概念

    TCP协议分成两个不同的协议: 1.网络传输中差错的传输控制协议TCP 2.专门负责对不同网络进行互联的互联网协议IP 网络体系结构概念: 网络体系结构即是指网络的层次结构和每层所使用协议的集合 OS ...

  9. GUI动态创建button

    #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; using ...

  10. C#如何在panl控件上添加Form窗体

    . if (treeView1.SelectedNode.Text == "个人信息") { Form1 f4 = new Form1(); f4.TopLevel = false ...