You need to enable JavaScript to run this app. VB.NET使用CookComputing.XmlRpcV2调用XML-API报unsupported media type错误咨询
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET使用CookComputing.XmlRpcV2调用XML-API报unsupported media type错误咨询

排查方向
  • 校验实际请求的完整Content-Type值
    不要仅判断类型是否为application/xml,需抓包确认代码发送的Content-Type完整值是否和Postman请求完全一致。CookComputing.XmlRpcV2会自动将你设置的XmlEncoding参数附加到Content-Type后,生成类似application/xml; charset=ISO-8859-7的格式,新服务端可能对带charset后缀的Content-Type做了严格限制,而Postman默认发送的请求不带charset后缀,因此能正常请求。
  • 对比请求体的实际内容差异
    将代码生成的XML请求体和Postman发送的请求体做逐字符对比,排查是否存在格式差异:
    1. 检查你开启的UseIntTag、UseIndentation参数生成的标签是否符合新系统的XML格式要求
    2. 确认编码后的请求体是否存在乱码,新系统可能默认采用UTF-8处理请求,对ISO-8859-7编码的兼容性不足
  • 检查多余请求头的影响
    高版本.NET Framework默认会自动添加Expect: 100-continue等标准请求头,新系统前端的反向代理、WAF可能不兼容这类头,直接返回415错误。可在创建代理对象前添加代码:
    ServicePointManager.Expect100Continue = False
    
    同时抓包确认所有请求头字段是否和Postman请求完全对齐。
  • 校验服务端返回的内容
    415错误也可能是XmlRpc库对服务端返回的Content-Type校验不通过触发的,可在WebException捕获块中添加调试代码读取原始响应:
    If webEx.Response IsNot Nothing Then
        Dim respHeaders As String = webEx.Response.Headers.ToString()
        Dim respStream As Stream = webEx.Response.GetResponseStream()
        Dim reader As New StreamReader(respStream, System.Text.Encoding.UTF8)
        Dim respContent As String = reader.ReadToEnd()
        ' 输出respHeaders、respContent排查实际返回内容
        Debug.WriteLine("响应头:" & respHeaders)
        Debug.WriteLine("响应体:" & respContent)
        webEx.Response.Close()
    End If
    
    确认新系统返回的Content-Type是否符合XmlRpc库的校验规则,是否存在大小写异常、附加多余参数、或者返回了错误页面的情况。
  • 验证库版本兼容性
    你当前使用的CookComputing.XmlRpcV2版本如果比较老旧,可能存在高版本.NET Framework下的适配问题,可尝试更新到最新版本,或自定义继承XmlRpcClientProtocol类,强制重写请求的ContentType为纯application/xml。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:27:03