2013-05-21 5 views
0

Необходимость Получение фид сайта для данного сайта с помощью Google Web Masters APIWeb Masters API и C# WebClient

WebClient client = new WebClient(); 
client.Headers.Add("Authorization: GoogleLogin auth=" + _auth); 
client.Headers.Add("GData-Version: 2"); 
client.Headers.Add("Content-Type", "application/atom+xml"); 
Stream stream = client.OpenRead("https://www.google.com/webmasters/tools/feeds/sites/http%3A%2F%2Fando.ueuo.com%2F/"); 
string str = reader.ReadToEnd(); 

, но каждый раз, когда ошибка возврата сервера (400) Bad Request.

Между тем тот же код для URL https://www.google.com/webmasters/tools/feeds/sites/ работает нормально и получает каналы для всех сайтов, как ожидалось.

client.Headers.Add("Authorization: GoogleLogin auth=" + _auth); 
client.Headers.Add("GData-Version: 2"); 
client.Headers.Add("Content-Type", "application/atom+xml"); 
Stream stream =client.OpenRead("https://www.google.com/webmasters/tools/feeds/sites/"); 
StreamReader reader = new StreamReader(stream); 
string str = reader.ReadToEnd(); 

Может кто-то помочь, пожалуйста?

ответ

0

В «https://www.google.com/webmasters/tools/feeds/sites/http%3A%2F%2Fando.ueuo.com%2F/»,% 2F - эквивалент, кодированный в /. Проблема в том, что у вас есть косая черта сразу после нее, поэтому она становится "//".

Изменить его «https://www.google.com/webmasters/tools/feeds/sites/http%3A%2F%2Fando.ueuo.com%2F»

Я считаю, что проще использовать System.Web.HttpUtility сделать все кодировки.

var encodedUrl = HttpUtility.UrlEncode("SITE NAME HERE"); 
string request = "https://www.google.com/webmasters/tools/feeds/sites/" + encodedUrl; 
Stream stream = client.OpenRead(request); 

Название сайта должно соответствовать точно, как показано в Webmasters Dashboard URL для сайта (не то, что вы назвали его)