一种web服务环境下非法报文的处理方法及系统与流程

专利2022-06-30  113


本发明涉及数据处理技术领域,并且更具体地,涉及一种web服务环境下非法报文的处理方法及系统。



背景技术:

对广大的开发人员来说,互联网上的不同系统之间的数据交换一直都是一项较为费时的问题。每次硬件或软件平台的升级往往需要转换大量的数据,甚至会出现数据丢失的现象。因此找寻一种编码简单、兼容性高、读写简易的数据交换方式变得越来越重要。xml作为一种以纯文本格式进行数据存储的格式,其提供了一种独立于软件和硬件的数据存储方法。以xml格式进行数据交换的方式不但可以降低系统开发的复杂性,而且可以使得不同应用程序数据的共享与交换变得更加容易。此外,xml格式数据还支持各种阅读设备的使用(如掌上计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。因此xml被广泛应用于不同系统的数据交换场景中。

然而,当xml的交换数据以unicode字符编码方式进行编码时,就会导致webservice客户端无法正常解析控制字符、以代理对表示的冷僻字、emoji表情等特殊字符,从而导致系统报非法字符异常,甚至使得系统抛出异常后终止系统运行。

该异常问题的原因在于webservice是采用xml格式进行数据传输的,w3c组织规定了xml里合法字符的范围包括常见的拉丁文、英文、中文、日语等其他语言文字共63457个字符,而控制字符、emoji表情符号、以代理对形式表示的冷僻字等特殊字符并不在该合法字符范围内。因此,当webservice客户端解析含有控制字符、以代理对形式表示的冷僻字、emoji表情等特殊字符编码的xml报文时,由于系统不能识别这些特殊字符的编码,进而导致系统报错。甚至各种主流的网页浏览器在解析该xml时也会输出异常信息。

因此,需要一种web服务环境下非法报文的处理方法。



技术实现要素:

本发明提出一种web服务环境下非法报文的处理方法及系统,以解决如何对由于特殊字符导致的非法报文进行处理的问题。

为了解决上述问题,根据本发明的一个方面,提供了一种web服务环境下非法报文的处理方法,所述方法包括:

通过api接口获取服务端返回的预设格式的报文数据;

利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符;

当确定当前解析的字符为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断所述非法字符是否符合unicode字符编码范围条件,并当所述非法字符符合unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。

优选地,其中所述通过api接口获取服务端返回的预设格式的报文数据,包括:

通过api接口获取服务端返回的第一报文数据,并对所述第一报文数据进行完整性校验;

当确定所述第一报文数据通过完整性校验时,对所述第一报文数据进行合并处理,以获取所述预设格式的报文数据。

优选地,其中所述利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符,包括:

利用字符解析器逐个扫描与解析所述预设格式的报文数据字符;

利用w3c组织规定的预设格式的合法字符编码范围条件,判别当前的字符数据是否合法;若当前的字符数据合法,则按顺序继续扫描下一字符数据;若当前的字符数据为非法字符,则基于预设的非法字符处理机制调用异常处理接口。

优选地,其中所述非法字符包括:控制字符、以代理对表示的冷僻字和emoji表情符号;所述预设格式为xml格式;所述的预设合法字符编码规则为基于w3c规定的xml合法字符编码范围条件的判断规则。

优选地,其中所述方法还包括:

当所述非法字符不符合unicode字符编码范围条件时,异常处理接口返回异常字符标识至所述字符解析器,所述字符解析器抛出异常。

根据本发明的另一个方面,提供了一种web服务环境下非法报文的处理系统,所述系统包括:

报文数据获取单元,用于通过api接口获取服务端返回的预设格式的报文数据;

非法字符判断单元,用于利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符;

非法字符处理单元,用于当确定当前解析的字符为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断所述非法字符是否符合unicode字符编码范围条件,并当所述非法字符符合unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。

优选地,其中所述报文数据获取单元,通过api接口获取服务端返回的预设格式的报文数据,包括:

通过api接口获取服务端返回的第一报文数据,并对所述第一报文数据进行完整性校验;

当确定所述第一报文数据通过完整性校验时,对所述第一报文数据进行合并处理,以获取所述预设格式的报文数据。

优选地,其中所述非法字符判断单元,利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符,包括:

利用字符解析器逐个扫描与解析所述预设格式的报文数据字符;

利用w3c组织规定的预设格式的合法字符编码范围条件,判别当前的字符数据是否合法;若当前的字符数据合法,则按顺序继续扫描下一字符数据;若当前的字符数据为非法字符,则基于预设的非法字符处理机制调用异常处理接口。

优选地,其中所述非法字符包括:控制字符、以代理对表示的冷僻字和emoji表情符号;所述预设格式为xml格式;所述的预设合法字符编码规则为基于w3c规定的xml合法字符编码范围条件的判断规则。

优选地,其中所述非法字符处理单元,还包括:

当所述非法字符不符合unicode字符编码范围条件时,异常处理接口返回异常字符标识至所述字符解析器,所述字符解析器抛出异常。

本发明提供了一种web服务环境下非法报文的处理方法及系统,在处理非法报文时,并不是简单地抛出异常信息或者直接过滤掉控制字符、以代理对表示的冷僻字及emoji表情符号所产生的非法字符数据,而是通过修改后台异常数据的处理规则,使得webservice能正常返回控制字符、以代理对表示的冷僻字及emoji表情符号所产生的非法字符数据。本发明的方法相比于直接抛出异常信息或数据过滤,实现过程简单,开发人员在无需修改服务端、客户端调用webservice时的上层业务代码的情况下,能有效避免由于非法数据导致系统抛出异常而终止运行问题和数据丢失情况,能有效确保xml数据的完整性。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1为根据本发明实施方式的web服务环境下非法报文的处理方法100的流程图;以及

图2为根据本发明实施方式的web服务环境下非法报文的处理系统200的结构示意图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1为根据本发明实施方式的web服务环境下非法报文的处理方法100的流程图。如图1所示,本发明实施方式提供的web服务环境下非法报文的处理方法,相比于直接抛出异常信息或数据过滤,实现过程简单,开发人员在无需修改服务端、客户端调用webservice时的上层业务代码的情况下,能有效避免由于非法数据导致系统抛出异常而终止运行问题和数据丢失情况,能有效确保xml数据的完整性。本发明实施方式提供的web服务环境下非法报文的处理方法100,从步骤101处开始,在步骤101通过api接口获取服务端返回的预设格式的报文数据。

优选地,其中所述通过api接口获取服务端返回的预设格式的报文数据,包括:

通过api接口获取服务端返回的第一报文数据,并对所述第一报文数据进行完整性校验;

当确定所述第一报文数据通过完整性校验时,对所述第一报文数据进行合并处理,以获取所述预设格式的报文数据。

优选地,其中所述非法字符包括:控制字符、以代理对表示的冷僻字和emoji表情符号;所述预设格式为xml格式;所述的预设合法字符编码规则为基于w3c规定的xml合法字符编码范围条件的判断规则。

在本发明的实施方式中,预设格式为xml格式,非法字符包括:控制字符、以代理对表示的冷僻字、emoji表情符号等非w3c规定的xml合法编码范围的字符。利用webservice的api接口接收来自服务端的xml报文数据,并通过数据校验、合并等方式最终形成一个完整的、临时的xml格式文件。该文件主要被用于后续字符数据编码的解析。客户端在接收xml文件时,需要判断是否完全接收xml数据。如果xml接受失败,需重新接收xml报文数据。

在步骤102,利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符。

优选地,其中所述利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符,包括:

利用字符解析器逐个扫描与解析所述预设格式的报文数据字符;

利用w3c组织规定的预设格式的合法字符编码范围条件,判别当前的字符数据是否合法;若当前的字符数据合法,则按顺序继续扫描下一字符数据;若当前的字符数据为非法字符,则基于预设的非法字符处理机制调用异常处理接口。

在本发明的实施方式中,利用字符解析器axis逐个扫描与解析回应的xml资源对象的字符编码。通过利用xml合法字符编码范围,判别当前xml字符编码是否合法。若当前xml的字符数据合法,则按顺序继续扫描下一字符编码。倘若当前的xml的字符编码非法,则系统基于预设的非法字符处理机制调用异常处理接口。

具体地,为避免xml存在非法数据导致系统抛出异常,客户端需要对xml非法字符进行扫描检测。这里主要使用到axis字符解析器。底层axis解析器逐个扫描与解析回应的xml报文字符编码。通过利用w3c组织规定的xml合法字符编码范围,判别当前xml字符编码是否合法。若当前xml的字符数据合法,则按顺序继续扫描下一字符编码。倘若当前的xml的字符编码非法,则系统调用异常处理接口,基于预设的非法字符处理机制并由非法字符处理机制处理该非法报文数据。

在步骤103,当确定当前解析的字符为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断所述非法字符是否符合unicode字符编码范围条件,并当所述非法字符符合unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。

优选地,其中所述方法还包括:

当所述非法字符不符合unicode字符编码范围条件时,异常处理接口返回异常字符标识至所述字符解析器,所述字符解析器抛出异常。

在本发明的实施方式中,当出现非法字符时,异常处理机制不会中断xml解析,并且会进一步对当前非法字符进行处理。为避免非法字符数据导致系统终止运行,非法字符处理机制并不是简单直接地将该异常抛出或过滤该非法字符,而是挂接自定义的异常处理接口,分析非法报文属性并修改其数据性质,使得xml解析器能将该非法字符当作正常字符加以处理,从而使得webservice接口正常返回该字符数据。当前非法数据处理完毕后,axis继续下一字符编码数据的扫描,直至xml中全部字符编码数据都被正确解析与处理。至此,xml中所有非法字符编码都能够被正确地处理,xml中不再存在非法字符编码。

unicode字符编码空间是#x0000-#x10ffff,而w3c标准中规定了xml合法字符的范围是char::=#x9|#xa|#xd|[#x20-#xd7ff]|[#xe000-#xfffd]|[#x10000-#x10ffff]。而我们常见的控制字符、以代理对表示的冷僻字、emoji表情的编码并不在w3c规定的xml合法编码范围内。因此xml解析库在解析字符,就会对这类编码当作为“非法报文”,进而抛出异常。对于这类非法编码的处理流程如下:xml在解析字符编码时,若遇到某个异常的字符时,xml解析器会调用异常处理接口(如xmlerrorhandler)里的方法去对该字符编码进行决策,并对判别为非法字符的编码返回一个错误的标识。而本发明实际修改的就是根据字符性质,改造xml异常字符的判定规则与异常处理流程,首先在异常处理的程序中挂接了异常处理接口方法,根据非法字符的编码,判断其是否在unicode字符的编码范围内。若在,则不直接去调用抛异常的流程,而是返回正常字符标识;否则还是会返回一个错误的标识。当xml解析器发现异常处理接口返回了正常字符标识,于是就可以将该非法字符当作正常字符去进行后续的处理了。否则还是会继续往上层抛出异常。通过这样的处理,就可以达到传输unicode字符的效果了。

通过挂接自定义异常处理机制,依据非法字符属性,修改异常处理接口返回的字符标识为正常字符标识,使得webservice接口能正常返回该字符数据。从而避免了非法数据导致系统抛出异常而终止运行问题的发生,同时也避免了数据丢失情况,确保了xml数据的完整性。

图2为根据本发明实施方式的web服务环境下非法报文的处理系统200的结构示意图。如图2所示,本发明实施方式提供的web服务环境下非法报文的处理系统200,包括:报文数据获取单元201、非法字符判断单元202和非法字符处理单元203。

优选地,所述报文数据获取单元201,用于通过api接口获取服务端返回的预设格式的报文数据。

优选地,其中所述报文数据获取单元201,通过api接口获取服务端返回的预设格式的报文数据,包括:

通过api接口获取服务端返回的第一报文数据,并对所述第一报文数据进行完整性校验;

当确定所述第一报文数据通过完整性校验时,对所述第一报文数据进行合并处理,以获取所述预设格式的报文数据。

优选地,所述非法字符判断单元202,用于利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符。

优选地,其中所述非法字符判断单元202,利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符,包括:

利用字符解析器逐个扫描与解析所述预设格式的报文数据字符;

利用w3c组织规定的预设格式的合法字符编码范围条件,判别当前的字符数据是否合法;若当前的字符数据合法,则按顺序继续扫描下一字符数据;若当前的字符数据为非法字符,则基于预设的非法字符处理机制调用异常处理接口。

优选地,所述非法字符处理单元203,用于当确定当前解析的字符为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断所述非法字符是否符合unicode字符编码范围条件,并当所述非法字符符合unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。

优选地,其中所述非法字符包括:控制字符、以代理对表示的冷僻字和emoji表情符号;所述预设格式为xml格式;所述的预设合法字符编码规则为基于w3c规定的xml合法字符编码范围条件的判断规则。

优选地,其中所述非法字符处理单元203,还包括:

当所述非法字符不符合unicode字符编码范围条件时,异常处理接口返回异常字符标识至所述字符解析器,所述字符解析器抛出异常。

本发明的实施例的web服务环境下非法报文的处理系统200与本发明的另一个实施例的web服务环境下非法报文的处理方法100相对应,在此不再赘述。

已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。

通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。


技术特征:

1.一种web服务环境下非法报文的处理方法,其特征在于,所述方法包括:

通过api接口获取服务端返回的预设格式的报文数据;

利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符;

当确定当前解析的字符为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断所述非法字符是否符合unicode字符编码范围条件,并当所述非法字符符合unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。

2.根据权利要求1所述的方法,其特征在于,所述通过api接口获取服务端返回的预设格式的报文数据,包括:

通过api接口获取服务端返回的第一报文数据,并对所述第一报文数据进行完整性校验;

当确定所述第一报文数据通过完整性校验时,对所述第一报文数据进行合并处理,以获取所述预设格式的报文数据。

3.根据权利要求1所述的方法,其特征在于,所述利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符,包括:

利用字符解析器逐个扫描与解析所述预设格式的报文数据字符;

利用w3c组织规定的预设格式的合法字符编码范围条件,判别当前的字符数据是否合法;若当前的字符数据合法,则按顺序继续扫描下一字符数据;若当前的字符数据为非法字符,则基于预设的非法字符处理机制调用异常处理接口。

4.根据权利要求1所述的方法,其特征在于,所述非法字符包括:控制字符、以代理对表示的冷僻字和emoji表情符号;所述预设格式为xml格式;所述的预设合法字符编码规则为基于w3c规定的xml合法字符编码范围条件的判断规则。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当所述非法字符不符合unicode字符编码范围条件时,异常处理接口返回异常字符标识至所述字符解析器,所述字符解析器抛出异常。

6.一种web服务环境下非法报文的处理系统,其特征在于,所述系统包括:

报文数据获取单元,用于通过api接口获取服务端返回的预设格式的报文数据;

非法字符判断单元,用于利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符;

非法字符处理单元,用于当确定当前解析的字符为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断所述非法字符是否符合unicode字符编码范围条件,并当所述非法字符符合unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。

7.根据权利要求6所述的系统,其特征在于,所述报文数据获取单元,通过api接口获取服务端返回的预设格式的报文数据,包括:

通过api接口获取服务端返回的第一报文数据,并对所述第一报文数据进行完整性校验;

当确定所述第一报文数据通过完整性校验时,对所述第一报文数据进行合并处理,以获取所述预设格式的报文数据。

8.根据权利要求6所述的系统,其特征在于,所述非法字符判断单元,利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,并在每个字符的解析过程中,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符,包括:

利用字符解析器逐个扫描与解析所述预设格式的报文数据字符;

利用w3c组织规定的预设格式的合法字符编码范围条件,判别当前的字符数据是否合法;若当前的字符数据合法,则按顺序继续扫描下一字符数据;若当前的字符数据为非法字符,则基于预设的非法字符处理机制调用异常处理接口。

9.根据权利要求6所述的系统,其特征在于,所述非法字符包括:控制字符、以代理对表示的冷僻字和emoji表情符号;所述预设格式为xml格式;所述的预设合法字符编码规则为基于w3c规定的xml合法字符编码范围条件的判断规则。

10.根据权利要求6所述的方法,其特征在于,所述非法字符处理单元,还包括:

当所述非法字符不符合unicode字符编码范围条件时,异常处理接口返回异常字符标识至所述字符解析器,所述字符解析器抛出异常。

技术总结
本发明公开了一种web服务环境下非法报文的处理方法及系统,包括:通过API接口获取服务端返回的预设格式的报文数据;利用字符解析器逐个扫描与解析所述预设格式的报文数据的字符,基于预设的合法字符编码范围条件判断当前解析的字符是否为非法字符;当确定为非法字符时,调用异常处理接口,基于预设的非法字符处理机制判断非法字符是否符合Unicode字符编码范围条件,并当符合Unicode字符编码范围条件时,使异常处理接口返回正常字符标识至所述字符解析器,以使得所述字符解析器能够将所述非法字符当作正常的字符进行解析。本发明的方法实现过程简单,能有效避免由于非法数据导致系统抛出异常而终止运行问题和数据丢失情况,能有效确保xml数据的完整性。

技术研发人员:郑刚;罗秀;周跃林;邓斯玉;文兆明;侯方
受保护的技术使用者:航天信息股份有限公司广州航天软件分公司
技术研发日:2019.12.31
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-55396.html

最新回复(0)