尝试在我的站点 returns 上使用 Google 索引 API 出现 404 错误,如何补救?
Trying to use the Google Index API on my site returns a 404 error, how to remedy this?
对于一家荷兰职业介绍所,我正在尝试编写一些代码,在发布或删除新职位时使用 Google 索引 API 更新 google 信息。对于初学者,我尝试获取通知状态,但响应是 404,尽管该网站显然可用。
作为新手程序员,我的结论是我可能在某个地方的代码中犯了错误,或者手头的任务根本不可能完成,因为 API 在我的国家(荷兰)没有正式可用
不幸的是,我对位于受支持国家/地区的类似网站没有任何所有权,因此我的代码是这里的问题所在。
正在搜索有关此错误的主题returns 大量信息,none 到目前为止似乎足以解决我的问题。
错误出现在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).Result;
}
public static async Task<string> GetTokenAndCall()
{
var keyFilePath = @"E:\LocationOnDisk\KeyFilename.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.Result;
return result;
}
}
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%3A%2F%2Fwww.WEBSITEHERE.nl%2F";
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();
}
}
错误 404 表示未找到有关 URL 的信息。
在请求 URL 被索引后,404 错误也消失了。
仍然需要编写代码来捕获 "error" 但除此之外它现在可以正常工作了!
对于一家荷兰职业介绍所,我正在尝试编写一些代码,在发布或删除新职位时使用 Google 索引 API 更新 google 信息。对于初学者,我尝试获取通知状态,但响应是 404,尽管该网站显然可用。
作为新手程序员,我的结论是我可能在某个地方的代码中犯了错误,或者手头的任务根本不可能完成,因为 API 在我的国家(荷兰)没有正式可用
不幸的是,我对位于受支持国家/地区的类似网站没有任何所有权,因此我的代码是这里的问题所在。
正在搜索有关此错误的主题returns 大量信息,none 到目前为止似乎足以解决我的问题。
错误出现在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).Result;
}
public static async Task<string> GetTokenAndCall()
{
var keyFilePath = @"E:\LocationOnDisk\KeyFilename.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.Result;
return result;
}
}
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%3A%2F%2Fwww.WEBSITEHERE.nl%2F";
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();
}
}
错误 404 表示未找到有关 URL 的信息。 在请求 URL 被索引后,404 错误也消失了。
仍然需要编写代码来捕获 "error" 但除此之外它现在可以正常工作了!