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

如何用Python构造含正确XML的POST请求调用海康威视ISAPI

解决海康威视ISAPI logSearch接口XML格式错误问题

以下是针对你遇到的Invalid XML Format错误的具体排查和解决思路:

  • 修复XML转义字符问题
    你当前payload里的&lt;和&gt;是HTML转义后的字符,接口需要的是原始XML标签(<和>)。从网页抓包得到的内容可能经过了转义,直接复用会导致XML格式无效。把所有&lt;替换为<,&gt;替换为>,还原成标准XML结构。

  • 调整payload的写法
    改用Python原生多行字符串定义payload,避免不必要的转义:

    payload = '''<?xml version="1.0" encoding="UTF-8"?>
    <CMSearchDescription>
        <searchID>CA32CBsadasdasda1A83</searchID>
        <metaId>log.std-cgi.com/Operation/devicePowerOn</metaId>
        <timeSpanList>
            <timeSpan>
                <startTime>2023-02-09T00:00:00Z</startTime>
                <endTime>2023-03-09T23:59:59Z</endTime>
            </timeSpan>
        </timeSpanList>
        <maxResults>100</maxResults>
    </CMSearchDescription>'''
    
  • 验证XML语法合法性
    把调整后的payload复制到XML编辑器(如VS Code的XML插件)中检查,确保所有标签闭合、没有多余字符、编码声明与实际编码一致。哪怕只修改了searchID,也可能不小心引入了空格或符号错误。

  • 优化请求头设置
    给Content-Type加上明确的字符集,确保与XML编码匹配:

    headers = {'Content-Type': 'application/xml; charset=utf-8'}
    
  • 强制指定编码发送
    尝试将payload转为UTF-8编码的bytes格式发送,避免字符串转码异常:

    output = requests.post(
        f"http://{targetIP}/{apiPath}",
        auth=HTTPDigestAuth(login, password),
        data=payload.encode('utf-8'),
        headers=headers,
        timeout=30
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:22:02