Я пытаюсь получить доступ к API last.fm через C #.В качестве первого теста я опрашиваю похожих художников, если это имеет значение.
Я получаю XML-ответ, когда передаю правильное имя исполнителя, то есть «Нирвану».Моя проблема заключается в том, что, когда я предоставляю недопустимое имя (например, «Nirvana23»), я не получаю XML, а код ошибки (403 или 400) и WebException
.
Интересная вещь: если я ввожу URL-адрес в браузере (протестировано с Firefox и Chrome), я получаю нужный XML-файл (содержащий сообщение об ошибке lastfm).
Я пробовал оба XmlReader
и XDocument
:
XDocument doc = XDocument.Load(requestUrl);
и HttpWebRequest
:
string httpResponse = "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);
HttpWebResponse response = null;
StreamReader reader = null;
try
{
response = (HttpWebResponse)request.GetResponse();
reader = new StreamReader(response.GetResponseStream());
httpResponse = reader.ReadToEnd();
}
URL-адрес похож на "http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=Nirvana23" (и конкретный ключ, полученный lastfm, но даже без него - он должен возвращать XML). Ссылка, чтобы попробовать: ссылка (это файл ошибок, к которому я не могу получить доступ через C #).
То, что я тоже пробовал(без успеха): сравнение запроса браузером и моей программой с помощью WireShark. Затем я добавил несколько заголовков в запрос, но это тоже не помогло.