You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用afirma URL协议签署文档时遇XML解析错误求助

问题诊断与解决方案

错误核心原因

你遇到的ParameterException是因为Afirma请求rtservlet参数指定的端点后,收到的响应并非合法UTF-8编码的XML文档,导致XML解析器抛出异常。

关键背景说明

在Afirma的afirma://sign协议中:

  • rtservlet并非直接指向待签署的ZIP文件地址,而是一个返回XML配置的端点——Afirma会向该地址请求,获取包含待签署文件下载链接、文件名、MIME类型等信息的XML参数,再根据XML内容去下载文件进行签署。
  • stservlet才是签署完成后提交已签文件的回调端点,你的这个参数配置是符合预期的。

具体修复步骤

  1. 修正rtservlet端点的响应内容
    确保storage_service端点返回符合Afirma协议规范的XML文档,而非直接返回ZIP文件。示例XML结构参考:

    <signParameters>
      <file>
        <url>https://test.pdev/es/8/manager_panel/ver/8/actual-file.zip</url>
        <name>target-file.zip</name>
        <mime>application/zip</mime>
      </file>
      <!-- 可添加其他可选参数,如签名位置、附加信息等 -->
    </signParameters>
    
  2. 确保XML响应的编码合法性

    • 检查storage_service端点的响应头,确认Content-Type为application/xml; charset=utf-8
    • 用工具(如curl、Postman)请求该端点,验证返回的XML无乱码、无非法UTF-8字节,且没有多余的字节序标记(BOM)
  3. 修正协议URL格式
    你提供的协议URL末尾多了一个多余的双引号,需删除,正确的URL为:

    afirma://sign?op=sign&algorithm=SHA256withRSA&format=CAdES&fileid=8&rtservlet=https%3A%2F%2Ftest.pdev%2Fes%2F8%2Fmanager_panel%2Fver%2F8%2Fstorage_service&stservlet=https%3A%2F%2Ftest.pdev%2Fes%2F8%2Fmanager_panel%2Fver%2F8%2Fsign_callback
    

额外参考

若需确认XML的详细规范,可查看Afirma源码中es.gob.afirma.core.misc.protocol包下的ProtocolInvocationUriParserUtil、ProtocolInvocationUriParser等类的实现逻辑,了解其对XML参数的解析要求。

内容的提问来源于stack exchange,提问作者Nerian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:13:12