Ошибка HTTP-перенаправления в проекте UWP C # - PullRequest
0 голосов
/ 24 мая 2019

Я получаю эту ошибку «Ошибка HTTP-перенаправления», когда я пытаюсь получить текст (целую строку) этого URL (например): «https://apic -desktop.musixmatch.com / WS / 1,1 / macro.subtitles.get? = формат JSON & q_track = Mi% 20Mi% 20Mi% 20% 28Radio% 20Edit% 29 & q_artist = СЕРЕБРО & user_language = еп & subtitle_format = МХМЫ & app_id = веб-настольное приложение-v1.0 & usertoken = SECRET TOKEN", но он работает в Chrome, и я должен получить этот файл json https://pastebin.com/GJdLK3BA (я загрузил его в Pastebin)

Платформа: UWP x64 Система: Windows 10 pro Апрельское обновление

public string URLToString(string url)
{
    HttpClient client = new HttpClient();
    HttpResponseMessage response = client.GetAsync(url).Result;
    string result = null;
    if (response.IsSuccessStatusCode)
    {
       result = client.GetStringAsync(url).Result;
    }
    else
    {
       result = null;
    }
    return result;
 }

LyURL = "https://apic-desktop.musixmatch.com/ws/1.1/matcher.lyrics.get?format=json&q_track=" + Uri.EscapeUriString(Title.Text) + "&q_artist=" + Uri.EscapeUriString(Arti.Text) + "&user_language=en&subtitle_format=mxm&app_id=web-desktop-app- v1.0&usertoken=*SECRET TOKEN*";

JObject jObject = JObject.Parse(URLToString(LyURL));

String Lyra = (string)jObject.SelectToken("message.body.lyrics.lyrics_body");

Сообщение об ошибке: сбой запроса HTTP перенаправления

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

enter image description here Я попробовал этот пример, и он работал для меня.Использование HttpWebRequest и настройка CookieContainer, мы надеемся, решит проблему

string url = @"https://apic-desktop.musixmatch.com/ws/1.1/macro.subtitles.get?format=json&q_track=Mi%20Mi%20Mi%20%28Radio%20Edit%29&q_artist=SEREBRO&user_language=en&subtitle_format=mxm&app_id=web-desktop-app-v1.0&usertoken=SECRET TOKEN";

string res;

    HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create(url);
                try
                {
                    webReq.CookieContainer = new CookieContainer();
                    webReq.Method = "GET";
                    using (WebResponse response = webReq.GetResponse())
                    {
                        using (Stream stream = response.GetResponseStream())
                        {
                            StreamReader reader = new StreamReader(stream);
                            res = reader.ReadToEnd();
                          }
                    }
                }
                catch (Exception ex)
                {} 
0 голосов
/ 24 мая 2019

Пространство имен Windows.Web.Http.Headers поддерживает создание заголовков HTTP и файлов cookie, которые затем связываются как свойства с объектами HttpRequestMessage и HttpResponseMessage.Пожалуйста, добавьте header = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"; перед отправкой получить запрос, как показано ниже.Для более подробной информации, пожалуйста, обратитесь к этому документу .

public async void SendGetMethod(string url, Action<HttpResponseMessage> resopnse)
{
    HttpClient client = new HttpClient();
    var headers = client.DefaultRequestHeaders;
    string header = "";
    if (!headers.UserAgent.TryParseAdd(header))
    {
        // throw new Exception("Invalid header value: " + header);
    }
    header = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
    if (!headers.UserAgent.TryParseAdd(header))
    {
        throw new Exception("Invalid header value: " + header);
    }
    HttpResponseMessage httpResponse = new HttpResponseMessage();
    Uri requestUri = new Uri(url);
    try
    {
        httpResponse = await client.GetAsync(requestUri);
        httpResponse.EnsureSuccessStatusCode();
        resopnse(httpResponse);
    }
    catch (Exception ex)
    {
        Debug.Write("Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message);
    }
}

Использование

SendGetMethod("url",(res)=>{
                 var result = res
            });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...