C# 如何通过http传输图像
我试图创建一个代理,正确处理基于文本的请求(js、css、html)。但是,当我尝试加载一个图像时,我得到一个消息,该图像包含错误 我已经尝试了多种通过http发送的方法,但都没有成功。这是相关代码C# 如何通过http传输图像,c#,http,tcp,proxy,httpwebresponse,C#,Http,Tcp,Proxy,Httpwebresponse,我试图创建一个代理,正确处理基于文本的请求(js、css、html)。但是,当我尝试加载一个图像时,我得到一个消息,该图像包含错误 我已经尝试了多种通过http发送的方法,但都没有成功。这是相关代码 try { StringBuilder responseString = new StringBuilder(); HttpWebRequest clientRequest = (HttpWebRequest)WebRequest.C
try
{
StringBuilder responseString = new StringBuilder();
HttpWebRequest clientRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)clientRequest.GetResponse();
string headers = response.Headers.ToString();
string contentType = response.Headers.Get("content-type");
var encoding = ASCIIEncoding.ASCII;
if (contentType.IndexOf("image") > -1)
{
using (BinaryReader stream = new BinaryReader(response.GetResponseStream()))
{
var bytes = new byte[1024];
while (true)
{
var n = stream.Read(bytes, 0, bytes.Length);
if (n == 0)
{
break;
}
responseString.Append(bytes);
}
return "HTTP/1.1 200 \n" + headers + responseString.ToString();
}
}
else
{
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
return "HTTP/1.1 200 \n" + headers + reader.ReadToEnd();
}
}
catch
{
addToList("Request failed");
return "Request failed";
}
}
如果可能,我希望保留http响应字符串,以便通过现有的NetworkStream发送它。解决方案是将响应直接流式传输到客户端,而不是首先将其转换为字符串。标题以前是以字符串形式发送的。只要看看您的代码和文档,我建议ASCII不是正确的编码,因为图像可能包含普通ASCII字符集之外的字符。请参阅:ASCII编码仅用于基于文本的请求,我没有对图像使用任何编码。除非ASCII是默认值,否则您以这种方式读取流而不是使用Image.FromStream()有什么原因吗?你能发布你得到的错误吗?我这样做的原因是因为图像不是唯一需要处理的东西。同样是流媒体,所以我觉得错误更多的是在处理/转换数据的方式上,而不是特定于图像。此外,我没有得到一个错误的代码。错误出现在网页上,说明图像无法显示,因为它包含错误