AJAX在C#中处理HTTP请求重定向的逻辑
在C#中,处理HTTP请求重定向通常是使用HttpClient
类
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks; namespace HttpRedirectExample{ class Program { static async Task Main(string[] args) { var url = "https://example.com/some-redirect-url"; using (var httpClientHandler = new HttpClientHandler())
{
httpClientHandler.AllowAutoRedirect = false; // 禁用自动重定向 using (var httpClient = new HttpClient(httpClientHandler))
{ try { var response = await httpClient.GetAsync(url); if (response.StatusCode == HttpStatusCode.Redirect || response.StatusCode == HttpStatusCode.MovedPermanently)
{ var redirectUrl = response.Headers.Location.ToString();
Console.WriteLine($"Redirect detected, new URL: {redirectUrl}"); // 手动处理重定向 var redirectResponse = await httpClient.GetAsync(redirectUrl); if (redirectResponse.IsSuccessStatusCode)
{ var content = await redirectResponse.Content.ReadAsStringAsync();
Console.WriteLine($"Content from redirected URL: {content}");
} else {
Console.WriteLine($"Error: {redirectResponse.StatusCode}");
}
} else if (response.IsSuccessStatusCode)
{ var content = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Content: {content}");
} else {
Console.WriteLine($"Error: {response.StatusCode}");
}
} catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
}
}
在这个示例中,我们首先创建一个HttpClientHandler
实例,将其AllowAutoRedirect
属性设置为false
以禁用自动重定向。然后,我们使用HttpClient
发送GET请求到指定的URL。如果响应状态码表示重定向(例如,HttpStatusCode.Redirect
或HttpStatusCode.MovedPermanently
),我们从响应头中获取新的URL,并手动发送另一个GET请求。最后,我们处理重定向后的响应并输出结果。
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论