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

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

评论

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

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