Попытка использовать Google Index API на моем сайте возвращает ошибку 404, как это исправить?

#c# #google-indexing-api

#c# #google-indexing-api

Вопрос:

Для голландского агентства по трудоустройству я пытаюсь написать немного кода, который будет использовать Google Index API для обновления информации Googles при публикации или удалении новой вакансии. Для начала я пытаюсь получить статус уведомления, но ответ 404, несмотря на то, что веб-сайт явно доступен.

Как начинающий программист, я пришел к выводу, что я, вероятно, где-то допустил ошибку в коде или что поставленная задача просто невозможна, поскольку API официально недоступен в моей стране (Нидерланды)

К сожалению, я не владею подобными сайтами, расположенными в поддерживаемых странах, чтобы убедиться, что проблема в моем коде.

Поиск тем по этой ошибке возвращает огромное количество информации, и пока, к сожалению, ни одна из них не решает мою проблему достаточно печально.

Ошибка появляется в строке using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())

Ниже приведен мой код:

 using Google.Apis.Auth.OAuth2;
using System.IO;
using System.Threading.Tasks;

    class AccessTokenGenerate
    {
        public static async Task<string> GetAccessTokenFromJSONKeyAsync(string jsonKeyFilePath, params string[] scopes)
        {
            using (var stream = new FileStream(jsonKeyFilePath, FileMode.Open, FileAccess.Read))
            {
                return await GoogleCredential
                    .FromStream(stream) // Loads key file
                    .CreateScoped(scopes) // Gathers scopes requested
                    .UnderlyingCredential // Gets the credentials
                    .GetAccessTokenForRequestAsync(); // Gets the Access Token
            }
        }

        public static string GetAccessTokenFromJSONKey(string jsonKeyFilePath, params string[] scopes)
        {
            return GetAccessTokenFromJSONKeyAsync(jsonKeyFilePath, scopes).Resu<
        }

        public static async Task<string> GetTokenAndCall()
        {
            var keyFilePath = @"E:LocationOnDiskKeyFilename.json";
            var scopes = new[] { "https://www.googleapis.com/auth/indexing" };
            GoogleCredential credential;
            using (var stream = new FileStream(keyFilePath, FileMode.Open, FileAccess.Read))
            {
                credential = GoogleCredential.FromStream(stream)
                .CreateScoped(scopes);
            }

            var token = await credential.UnderlyingCredential.GetAccessTokenForRequestAsync();
            return token;
        }

        public static string GetToken()
        {
            var task = GetTokenAndCall();
            task.Wait();
            var result = task.Resu<
            return resu<
        }

    }

using System;
using System.IO;
using System.Net;

    class Program
    {
        static void Main(string[] args)
        {
            var token = AccessTokenGenerate.GetToken();
            string responseString = "";
            string uri = "https://indexing.googleapis.com/v3/urlNotifications/metadata?url=https://www.WEBSITEHERE.nl/";

            WebRequest request = WebRequest.Create(uri);
            request.PreAuthenticate = true;

            request.ContentType = "application/json";
            request.Headers.Add("Authorization", "Bearer "   token);
            request.Method = "GET";
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
            {
                responseString = reader.ReadToEnd();
            }

            Console.WriteLine(responseString);
            Console.ReadKey();
        }
    }
 

Ответ №1:

Ошибка 404 указывала на то, что информация об URL-адресе не найдена. После запроса индексируемого URL-адреса ошибка 404 также исчезла.

Все еще нужно кодировать, чтобы перехватить «ошибку», но, кроме этого, она работает сейчас!