AJAX在C#中处理HTTP请求重定向的逻辑

蜗牛 互联网技术资讯 2024-09-10 10 0

在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.RedirectHttpStatusCode.MovedPermanently),我们从响应头中获取新的URL,并手动发送另一个GET请求。最后,我们处理重定向后的响应并输出结果。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo6@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram