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

使用TcpClient发送HTTP请求返回505 HTTP Version Not Supported错误如何解决

问题根因

你遇到的505错误核心原因是字符串转义逻辑错误:
C#中带@前缀的是逐字字符串,会直接保留字符的原始写法,你写的\r\n不会被解析为HTTP协议要求的回车换行符,而是作为普通的\、r、\、n四个字符发送。服务器收到的是一段无换行的连续字符串,无法正确拆分请求行和请求头,自然无法识别HTTP版本字段,哪怕你修改版本号也无法解决问题。

解决方法

以下三种方案任选其一即可:

  • 去掉字符串前的@前缀,让\r\n正常转义为回车换行符:
var message = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n";
  • 保留@前缀的话,直接在字符串内换行,逐字字符串会保留实际的换行格式:
var message = @"GET / HTTP/1.1
Host: www.example.com
Connection: close

";
  • 更稳妥的标准化写法,避免硬编码转义字符出错:
const string NewLine = "\r\n";
var message = $"GET / HTTP/1.1{NewLine}Host: www.example.com{NewLine}Connection: close{NewLine}{NewLine}";
后续排查验证手段

如果修改后仍有问题,可以按以下步骤排查:

  • 发送请求前打印message的原始内容,确认请求行、各请求头之间都有独立换行,请求末尾有两个连续换行
  • 用抓包工具抓取发送的TCP报文,确认请求格式完全符合HTTP规范,没有多余字符、空格
  • 确认Host头的内容和你请求的域名完全一致,没有拼写错误、多余端口等问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:03