C#:从.ashx网站下载.jpg
我目前正在尝试从一个使用.ashx管理上传图像的网站下载图像。该网站是“UploadHandler.ashx”,并采用宽度、高度和图像id等参数。当我在浏览器中访问该网站时,它会自动为我下载图片。但是,当我尝试使用HttpWebRequest和cookies下载它时,它会给我一个1kb的图像,如果我将其更改为.txt,它就是HTML,表示对象已被移动,并将我引用到登录页面 我当前的下载代码:C#:从.ashx网站下载.jpg,c#,ashx,C#,Ashx,我目前正在尝试从一个使用.ashx管理上传图像的网站下载图像。该网站是“UploadHandler.ashx”,并采用宽度、高度和图像id等参数。当我在浏览器中访问该网站时,它会自动为我下载图片。但是,当我尝试使用HttpWebRequest和cookies下载它时,它会给我一个1kb的图像,如果我将其更改为.txt,它就是HTML,表示对象已被移动,并将我引用到登录页面 我当前的下载代码: void DownloadImage(string onlinepath, string localpa
void DownloadImage(string onlinepath, string localpath)
{
Stream remoteStream = null;
Stream localStream = null;
HttpWebResponse response = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(onlinepath);
request.AllowAutoRedirect = false;
request.CookieContainer = cookie;
response = (HttpWebResponse)request.GetResponse();
request.ServerCertificateValidationCallback +=
delegate (
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
return true;
};
if (request != null)
{
if (response != null)
{
remoteStream = response.GetResponseStream();
localStream = File.Create(localpath);
byte[] buffer = new byte[1024];
int bytesRead;
do
{
bytesRead = remoteStream.Read(buffer, 0, buffer.Length);
localStream.Write(buffer, 0, bytesRead);
} while (bytesRead > 0);
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
if (response != null) response.Close();
if (remoteStream != null) remoteStream.Close();
if (localStream != null) localStream.Close();
}
}
.txt格式的当前输出:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Login/Index">here</a>.</h2>
</body></html>
对象已移动
对象移动到。
设置AllowAutoRedirect
到true
@NicoSchertler,下载登录页面的HTML。那么您的浏览器必须做的不仅仅是请求文件(例如发送身份验证cookie或类似文件)。您获得的状态码是什么?在我看来,您似乎未经授权。请使用Fiddler并将您的浏览器发送的请求与您的程序发送的请求进行比较。确保您拥有所有正确的标题/cookies.SetAllowAutoRedirect
至true
@NicoSchertler,下载登录页面的HTML。那么您的浏览器必须做的不仅仅是请求文件(例如发送验证cookies或类似文件)。您获得的状态码是什么?在我看来,您似乎未经授权。请使用Fiddler并将您的浏览器发送的请求与您的程序发送的请求进行比较。确保您拥有所有正确的标题/cookie。