我正在尝试创建代理,基于文本的请求得到正确处理(js,css,html)。但是,当我尝试加载图像时,我收到图像包含错误的消息。
我尝试了多种方法通过http发送它,但它们都没有工作。这是相关代码
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发送它。
答案 0 :(得分:0)
解决方案是将响应直接流式传输到客户端,而不是先将其转换为字符串。标题在之前以字符串形式发送。