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

VB.NET调用Cisco AMP API返回200状态码但响应内容为乱码无有效数据

问题根源

你手动添加了Accept-Encoding: gzip, deflate请求头告知服务器可以返回压缩内容,但VB.NET的WebClient和HttpWebRequest默认不会自动解压gzip/deflate格式的响应,你拿到的是压缩后的二进制数据,直接用UTF8转字符串就会出现乱码。Python的requests库默认开启自动解压,所以可以直接拿到明文内容。

修正方案

通用可选优化

你同时使用了URL携带凭据、Credentials属性赋值、手动添加Authorization请求头三种认证方式,属于冗余配置,保留任意一种即可,避免部分服务器解析认证信息时出现冲突。

方案1:WebClient实现修正

两种可选处理方式:

  1. 最简单的方式:删除压缩请求头
    直接删掉代码中request.Headers.Add("Accept-Encoding", "gzip, deflate")这一行,服务器就会返回未压缩的明文内容,原有逻辑直接可用。
  2. 保留压缩传输:手动处理解压
    如果需要保留压缩提升传输效率,将下载到的字节先做gzip/deflate解压再转字符串:
' 下载字节后先解压
Dim rawData As Byte() = request.DownloadData(uri)
Using ms As New IO.MemoryStream(rawData)
    Using gzip As New IO.Compression.GZipStream(ms, IO.Compression.CompressionMode.Decompress)
        Using reader As New IO.StreamReader(gzip, Text.Encoding.UTF8)
            Dim htmlResponse As String = reader.ReadToEnd()
            ' 后续处理逻辑
        End Using
    End Using
End Using

方案2:HttpWebRequest实现修正

直接开启框架自带的自动解压属性即可,无需手动处理解压逻辑:

' 在request初始化完成后添加这一行
request.AutomaticDecompression = Net.DecompressionMethods.GZip Or Net.DecompressionMethods.Deflate

其余逻辑不用修改,StreamReader.ReadToEnd()就能直接拿到解压后的明文内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:03