报文解析方法及装置与流程

文档序号:29087740发布日期:2022-03-02 01:51阅读:271来源:国知局
报文解析方法及装置与流程

1.本发明涉及移动互联技术领域,尤其涉及报文解析方法及装置。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.http报文包含标准http报文、非标准http报文。目前,针对标准http报文的解析,只能将报文解析为报文头header或者解析为报文头header和报文体body两部分,但是http报文中经常会嵌套一些其他格式的报文(例如key=value、xml、json等格式的报文),标准http报文分为两种,一种是get类型的http报文:只包含报文头,报文头中可能会嵌套key=value格式的报文;另一种是非get类型的http报文:包含报文头、报文体,其中报文头中包含http报文中的正常报文数据,报文体中可能嵌套key=value或者xml或者json等格式化的报文。现有的针对http报文的解析方案,无法对http报文中包含的其它格式的报文进行更为详细的解析,需要人为的进行分析得到更详细的解析结果,工作量大,容易出错,http报文解析效率低。


技术实现要素:

4.本发明实施例提供一种报文解析方法,用以对http报文中嵌套的其它格式的报文进行进一步的解析,提高http报文的解析效率,该方法包括:
5.在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;
6.在所述http报文的报文类型为get类型时,对所述http报文进行解析,得到第一报文头;
7.在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式;
8.将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。本发明实施例还提供一种报文解析装置,用以对http报文中嵌套的其它格式的报文进行进一步的解析,提高http报文的解析效率,该装置包括:
9.报文类型确定模块,用于在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;
10.第一解析模块,用于在所述http报文的报文类型为get类型时,对所述http报文进行解析,得到第一报文头;
11.第二解析模块,用于在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的
预设格式;
12.存储模块,用于将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。
13.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述报文解析方法。
14.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述报文解析方法。
15.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述报文解析方法。
16.本发明实施例中,在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;在所述http报文的报文类型为get类型时,对所述http报文进行解析,得到第一报文头;在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式;将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。这样,可以对http报文中嵌套的其它格式的报文进行进一步的解析,提高http报文的解析效率。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
18.图1为本发明实施例中提供的一种报文解析方法的流程图;
19.图2为本发明实施例中提供的一种根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果的方法流程图;
20.图3为本发明实施例中提供的一种非get类型报文的解析方法的流程图;
21.图4为本发明实施例中提供的一种非标准http报文的解析方法的流程图;
22.图5为本发明实施例中提供的一种报文解析装置的示意图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
24.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
25.在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
26.经研究发现,http报文包含标准http报文、非标准http报文。目前,针对标准http报文的解析,只能将报文解析为报文头header或者解析为报文头header和报文体body两部分,但是http报文中经常会嵌套一些其他格式的报文(例如key=value、xml、json等格式的报文),标准http报文分为两种,一种是get类型的http报文:只包含报文头,报文头中可能会嵌套key=value格式的报文;另一种是非get类型的http报文:包含报文头、报文体,其中报文头中包含http报文中的正常报文数据,报文体中可能嵌套key=value或者xml或者json等格式化的报文。现有的针对http报文的解析方案,无法对http报文中包含的其它格式的报文进行更为详细的解析,需要人为的进行分析得到更详细的解析结果,工作量大,容易出错,http报文解析效率低。
27.针对上述研究,本发明实施例提供一种报文解析方法,如图1所示,包含:
28.s101:在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;
29.s102:在所述http报文的报文类型为get类型时,对所述http报文进行解析,得到第一报文头;
30.s103:在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式;
31.s104:将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。
32.本发明实施例中,在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;在所述http报文的报文类型为get类型时,对所述http报文进行解析,得到第一报文头;在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式;将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。这样,可以对http报文中嵌套的其它格式的报文进行进一步的解析,提高http报文的解析效率。
33.下面对上述s101~s104加以详细说明。
34.首先对本发明实施例的一些名词加以说明介绍:
35.本发明实施例中所述的标准http报文为只包含报文头或者包含报文头和报文体的http报文,自定义http报文为包含除报文头和报文体以外的自定义数据的http报文;
36.本发明实施例中所述的标准http报文中包含get类型的http报文和非get类型的
http报文;其中,所述get类型的http报文只包含报文头,报文头中可能包含只http的正常报文数据,也可能嵌套key=value格式的报文;非get类型的http报文包含报文头和报文体。
37.针对上述s101,在接收到的http报文为标准的http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型,例如,根据http报文中的前3个字节确定所述http报文的报文类型,如果所述http报文的前三个字节是“get”,则代表该http报文是get类型的http报文,否则,代表该htp报文为非get类型。
38.针对上述s102,在http报文中的前三个字节是“get”时,该http报文为get类型的http报文,该http报文中只包含报文头不包含报文体,对该get类型的http报文进行解析得到第一报文头。
39.针对上述s103,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式,根据预设条件确定第一报文头中包含key=value格式的报文时,例如确定第一报文头中存在符号:“=”,且不存在符号:“《”、“[”、“{”,且符号“=”之后变量对应的数值是字母或者数字时,确定第一报文头中包含key=value格式的报文。
[0040]
具体的,如图2所示,为本发明实施例提供的一种根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果的方法流程图,包括:
[0041]
s201:遍历所述第一报文头,查找第一报文头字符串中的预设字符,将所述第一报文头字符串从每一预设字符处进行切分,得到至少一个子字符串。
[0042]
示例性的,key=value格式的报文中会以字符“&”分隔,例如“key1=value1&key2=value2&
…”
,从每一预设字符处切分得到至少一个子字符串,例如“key1=value1&”、“key2=value2&
”…

[0043]
s202:提取每一子字符串中除所述预设字符外的内容,得到至少一个key=value格式的解析结果。
[0044]
示例性的,针对子字符串“key1=value1&”,提取除“&”外的内容,得到“key1=value1”,针对子字符串“key3=value3”,直接提取“key3=value3”。
[0045]
针对上述s104,将报文体中各变量、以及各变量对应的数值分别存储为单个的key=value格式的数据,例如,将报文“key1=value1&key2=value2&
…”
解析后,按照“key1=value1”、“key2=value2
”…
进行存储。
[0046]
此外,在接收到的http报文是标准http报文且该http报文中除包含报文头外还包含报文体时,该http报文为非get类型的http报文,非get类型的http报文的报文头中包含http报文的正常报文数据,但是,报文体中可能会嵌套key=value格式或者xml格式,或者json格式的报文。
[0047]
因此,如图3所示,为本发明实施例提供的一种非get类型报文的解析方法的流程图,包括:
[0048]
s301:在所述http报文的报文类型为非get类型时,对所述http报文进行解析,得到第二报文头、报文体。
[0049]
s302:根据报文体中嵌套的报文格式调用对应的解析函数对所述报文体进行解析,得到报文体中各变量对应的数值;其中,报文体中嵌套的报文格式包括:key=value格式,或者xml格式,或者json格式。
[0050]
具体的,例如根据预设条件确定报文体中是否嵌套其他格式的报文,报文体中嵌套其它格式的报文时,根据报文体中嵌套的报文格式调用对应的解析函数对所述报文体进行解析。
[0051]
此处,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式,每一嵌套的报文格式对应的预设条件都不同。
[0052]
本发明一实施例中,在根据报文体中嵌套的报文格式调用对应的解析函数对所述报文体进行解析,得到报文体中各变量对应的数值时,例如在报文体中嵌套的报文格式为:key=value格式时,调用key=value格式对应的解析函数,将报文体中的每一行单独取出作为一个单独的key=value格式的解析结果,得到每行的变量对应的数值。
[0053]
此处,报文体中嵌套的key=value格式的报文,是在每一行都有一个“key=value”的字符串,例如第一行为“key1=value1”、第二行为“key2=value2
”…

[0054]
本发明另一实施例中,在根据报文体中嵌套的报文格式调用对应的解析函数对所述报文体进行解析,得到报文体中各变量对应的数值时,例如在报文体中嵌套的报文格式为:json格式时,根据json格式报文中的字符,在javacc中设置保留字符、以及解析规则,生成解析函数;调用解析函数对报文体字符串进行解析,得到报文体中各变量对应的数值。
[0055]
解析xml格式的报文的解析函数可直接调用现有的java标准的库函数,此处不再赘述。
[0056]
s303:将报文体中各变量、以及各变量对应的数值分别存储为单个的key=value格式的数据。
[0057]
此外,非标准http报文是由自定义数据、以及标准http报文构成。现有针对非标准http报文的解析,无法对自定义数据部分进行解析。
[0058]
因此,如图4所示,为本发明实施例提供的一种非标准http报文的解析方法的流程图,包括:
[0059]
s401:在接收到的http报文为非标准http报文时,根据预先约定的非标准http报文生成规则,从http报文字符串中的预设位置提取预设位数的子字符串,得到自定义数据、以及标准http报文;
[0060]
s402:根据预先约定的非标准http报文解析规则,对所述自定义数据进行解析得到自定义数据中各变量对应的数值;其中,非标准http报文解析规则是根据非标准http报文生成规则得到的;
[0061]
s403:将自定义数据中的各变量、以及各变量对应的数值分别存储为单个的key=value格式的数据。
[0062]
本发明实施例中还提供了一种报文解析装置,如下面的实施例所述。由于该装置解决问题的原理与报文解析方法相似,因此该装置的实施可以参见报文解析方法的实施,重复之处不再赘述。
[0063]
如图5所示,为本发明实施例提供的一种报文解析装置,包括:报文类型确定模块501、第一解析模块502、第二解析模块503、以及存储模块504;其中,
[0064]
报文类型确定模块501,用于在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;
[0065]
第一解析模块502,用于在所述http报文的报文类型为get类型时,对所述http报
文进行解析,得到第一报文头;
[0066]
第二解析模块503,用于在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式;
[0067]
存储模块504,用于将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。
[0068]
在一种可能的实施方式中,第二解析模块,具体用于遍历所述第一报文头,查找第一报文头字符串中的预设字符,将所述第一报文头字符串从每一预设字符处进行切分,得到至少一个子字符串,提取每一子字符串中除所述预设字符外的内容,得到至少一个key=value格式的解析结果。
[0069]
在一种可能的实施方式中,还包括:第三解析模块,用于在所述http报文的报文类型为非get类型时,对所述http报文进行解析,得到第二报文头、报文体;根据报文体中嵌套的报文格式调用对应的解析函数对所述报文体进行解析,得到报文体中各变量对应的数值;其中,报文体中嵌套的报文格式包括:key=value格式,或者xml格式,或者json格式;存储模块,还用于将报文体中各变量、以及各变量对应的数值分别存储为单个的key=value格式的数据。
[0070]
在一种可能的实施方式中,第三解析模块,具体用于在报文体中嵌套的报文格式为:key=value格式时,调用key=value格式对应的解析函数,将报文体中的每一行单独取出作为一个单独的key=value格式的解析结果,得到每行的变量对应的数值。
[0071]
在一种可能的实施方式中,第三解析模块,具体用于在报文体中嵌套的报文格式为:json格式时,根据json格式报文中的字符,在javacc中设置保留字符、以及解析规则,生成解析函数;调用解析函数对报文体字符串进行解析,得到报文体中各变量对应的数值。
[0072]
在一种可能的实施方式中,还包括:第四解析模块,用于在接收到的http报文为非标准http报文时,根据预先约定的非标准http报文生成规则,从http报文字符串中的预设位置提取预设位数的子字符串,得到自定义数据、以及标准http报文;根据预先约定的非标准http报文解析规则,对所述自定义数据进行解析得到自定义数据中各变量对应的数值;其中,非标准http报文解析规则是根据非标准http报文生成规则得到的;存储模块,还用于将自定义数据中的各变量、以及各变量对应的数值分别存储为单个的key=value格式的数据。
[0073]
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述报文解析方法。
[0074]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述报文解析方法。
[0075]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述报文解析方法。
[0076]
本发明实施例中,在接收到的http报文为标准http报文时,根据http报文中的预设位置是否包含预设报文类型标识确定所述http报文的报文类型;在所述http报文的报文
类型为get类型时,对所述http报文进行解析,得到第一报文头;在根据预设条件确定第一报文头中包含key=value格式的报文时,根据预设字符对所述第一报文头进行解析,得到至少一个key=value格式的解析结果;其中,预设条件中包含报文格式中应当存在的字符、不能存在的字符、以及预设变量的预设格式;将得到的key=value格式的解析结果分别存储为单个的key=value格式的数据。这样,可以对http报文中嵌套的其它格式的报文进行进一步的解析,提高http报文的解析效率。
[0077]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0078]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0079]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0080]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0081]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1