Immer System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (403) Verboten. in den Google URL Shortener API-Aufruf
Verwende ich folgenden code verkürzen von langen urls
public static string UrlShorten(string url)
{
string post = "{\"longUrl\": \"" + url + "\"}";
string shortUrl = url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.googleapis.com/urlshortener/v1/url?key=" + ReadConfig("GoogleUrlShortnerApiKey"));
try
{
request.ServicePoint.Expect100Continue = false;
request.Method = "POST";
request.ContentLength = post.Length;
request.ContentType = "application/json";
request.Headers.Add("Cache-Control", "no-cache");
using (Stream requestStream = request.GetRequestStream())
{
byte[] postBuffer = Encoding.ASCII.GetBytes(post);
requestStream.Write(postBuffer, 0, postBuffer.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader responseReader = new StreamReader(responseStream))
{
string json = responseReader.ReadToEnd();
shortUrl = Regex.Match(json, @"""id"": ?""(?<id>.+)""").Groups["id"].Value;
}
}
}
}
catch (Exception ex)
{
//if Google's URL Shortner is down...
Utility.LogSave("UrlShorten", "Google's URL Shortner is down", url, ex.ToString());
//System.Diagnostics.Debug.WriteLine(ex.Message);
//System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
return shortUrl;
}
Habe ich einen scheduler zu verkürzen große Anzahl von urls. Und die meiste Zeit habe unter Ausnahme
System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (403) Verboten. System.Net.HttpWebRequest.GetResponse()
Ich dachte, dass aufgrund der Höflichkeit Begrenzen, wurde ich immer diese exception, so dass erhöhte Pro-Benutzer-Grenze von 100.000.0 Anfragen/Sekunde/user aber trotzdem bin ich immer die gleiche exception.
Ich nicht verstehen, warum Ihr geschieht, noch mache ich kaum 2000-Anforderung an den server zu einem Zeitpunkt.
Bitte beraten.
- Können Sie sehen, was die ganze json-Antwort ist? nicht nur der status-code.
- Es wirft die Ausnahme bei "verwenden (HttpWebResponse response = (HttpWebResponse)request.GetResponse())" und die komplette execption ist "System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (403) Verboten. System.Net.HttpWebRequest.GetResponse() bei BusinessLogic.Utility.UrlShorten(String url) in D:\Dotnet Projekte\FutureZoom\FutureZoom\BusinessLogic\Utility.cs:Zeile 140"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf Ihre Frage, die ich vermute, es ist ein rate-limit überschritten Fehler. Sie können rufen Sie die Fehlerantwort, wenn Sie ändern Sie Ihren code wie folgt:
Wenn es ein limit überschritten Fehler findest du so etwas in
responseText
:Dieser Fehler auftreten, weil Ihre Veröffentlichung der Daten zum webservice sehr schnell, so dass google erkennen es als Roboter.(wenn du die post-Daten manuell diese Häufig, es wird Sie bitten, um geben Sie den captcha-code ).
so, um dieses problem zu beheben, müssen Sie erhöhen Sie Zeit-Intervall zwischen jeder post-request.