【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协议实现邮件轨迹跟踪查询

时间: 2024-11-06 09:38:34

【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询的相关文章

VBA通过HTTP协议实现邮件轨迹跟踪查询

作者:iamlasong 1.接口说明 通过互联网访问,接口调用为HTTP请求的方式,每一次由用户发起的HTTP请求,需要设置验证信息,具体方法是,在HTTP Header部分增加version及authenticate属性,属性值在联调测试之前由总部提供. 接口调用地址:http:// IP:Port/invoke/path/{mail_num} 接口调用方式:HTTP GET方式,通过HTTP GET发起请求,使用真实邮件号替换{mail_num} 编码格式:UTF-8 接口返回数据格式:

【VBA研究】VBA产生不重复随机数

作者:iamlasong VBA编程实现不重复随机数输出.VBA里的随机函数是RND,在工作表中随机函数是RAND,一字之差,可要记好了.RND取值范围是[0,1),意思是0和1之间的一个随机数,包含0,但不包含1. 1.用法 语法:Rnd[(number)] 如果 number 的值是 Randomize 生成 小于 0 ,每次都使用 number 作为随机数种子得到的相同结果. 大于 0 ,以上一个随机数为种子产生下一个随机数. 等于 0 ,产生与最近生成的随机数相同的随机数. 省略, 以上

【VBA研究】VBA做了个简单的试题生成工具

作者:iamlasong 单位对新上岗的员工进行培训,培训结束后,需要进行考试,需要一个简单的考试系统,让新员工既可以自己练习,也可以进行测试,为此,我们做了一个题库,员工可以自己生成一套考题,测试自己的掌握程度,也可以集中起来进行考试,测试培训效果. 系统数据库很简单,主要有两个表,一个是题库,一个是成绩. create table EMSAPP_TEST_QUESTION ( type                  CHAR(1), id                    NUMBE

网络公有协议之邮件SMTP篇

1.写在开始之前 之前在工作中也是遇到过smtp协议,那个时候因为解决出现的bug比较急,所以并没有仔细去学习或者深入了解smtp相关知识,刚好最近工作又碰到相关问题,因为bug的奇怪,所以不得不放下手头的相关工作,好好研究了下smtp协议的相关流程和具体实施,所以记录下来和大家一起分享. 2.smtp理论基础知识 smpt(全称为 simple mail transfer protocol),中文的意思也就是简单的邮件传输协议,它是一组用于有源地址到目的地址传输邮件的规则,是由它来控制信件的中

【Python3】POP3协议收邮件

初学Python3,做一个email的例子,虽然知道做的很渣渣,还是分享一下吧 POP3协议 POP3全称Post Official Protocol3,即邮局协议的第三个版本,它规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议,它是因特网电子协议的第一个离线标准,POP3允许用户从服务器上将邮件存储到本地主机(个人计算机),同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的邮件服务器,用来接收电子邮件. Python3支持POP3的模块是p

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

问题: 公司之前可以通过POP3协议收发邮件,因而在SoapUI中用JavaMail可以读取邮件,后来配置了Office 365,POP3协议端口不再开放,邮件全部读取失败,报login timeout,需要改用EWS(Exchange Web Service)协议. 参考 : http://blog.csdn.net/yangcheng33/article/details/55049629 需要导入此JAR包 : ews-java-api-2.0.jar import java.net.URI

【VBA研究】方法quit作用于IWebBrowser2失败怎么办

作者:iamlaosong 用VBA编程实现自动读取网页数据,在读取过程中关闭网页时遇到这样一个错误:" 方法quit作用IWebBrowser2失败",无法执行quit方法,但其它属性没有问题,百思未得其解,其源代码如下: Sub login3() Dim ie1 As Object lineno = [A65536].End(xlUp).Row '行数 For row1 = 2 To lineno ems_id = Trim(Cells(row1, 1)) Set ie1 = Cr

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

作者:iamlaosong 用VBA程序处理Excel数据文件.用户的数据文件有时处于自己主动筛选模式,往往导致数据处理不对.为此,须要检測工作表是否处于该模式,假设是,则去掉自己主动筛选.语句例如以下: If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter 这个语句一般仅仅用于去掉自己主动筛选,尽管Selection.AutoFilter也能够加上自己主动筛选,但筛选位置却可能在当前单元格处,所以要注意.加自己主动筛选前,

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

作者:iamlaosong 用VBA对Excel文件进行处理的时候,keyword段的列号编程时往往是不知道的.须要通过參数设定才干知道,因此.我们编程的时候,就不能用这种语句取有效行数: lineno = [B65536].End(xlUp).Row          '从下至上找有效行数 上述语句中的列名"B"假设是变量.能够用字符串连接的方式实现,即: pos_ems = "C" lineno = Range(pos_ems & "65536