2

我正在使用来自 ASP.NET 网站的 Google URL Shortener。它在我的本地主机上运行良好,但在测试服务器上出现以下错误:

System.Net.WebException: The remote server returned an error: (403)
Forbidden.
at System.Net.HttpWebRequest.GetResponse()
at GoogleUrlShortnerApi.Shorten(String url) 

我正在使用此处显示的确切代码: http ://www.jphellemons.nl/post/Google-URL-shortener-API-%28googl%29-C-sharp-class-C.aspx

难道密钥只能在我的本地计算机上工作,而不能在任何其他计算机上工作?我已经获得了另一个密钥(使用另一个 Google 帐户),但是这个密钥在我的本地计算机和测试服务器上都给了我相同的错误 (403)。

4

2 回答 2

2

我非常怀疑 API 是否链接到特定的 PC。您需要检查程序发出的请求(包括 URL 和标头),它们必须在某些方面有所不同。您的服务器是否在某种代理之后 - 例如 Apache?如果未正确配置,这也可能会破坏请求。还要确保您的请求编码正确。

于 2011-03-23T12:59:17.250 回答
2

根据Scott Mitchell的教程,我做了一些修改,并更改了以下代码行:

首先,而不是:

string post = "{\"longUrl\": \"" + url + "\"}";

我用了:

string post = string.Format(@"{{""longUrl"": ""{0}""}}", url );

其次,我注释掉了这两行:

request.ServicePoint.Expect100Continue = false;  
request.Headers.Add("Cache-Control", "no-cache");

我不知道为什么,但突然它开始工作了。所以我想看看我做的 3 个薄薄中的哪一个出了问题,所以我把每个都退回了,而且 - TADA - 它仍然有效,即使所有 3 个都在那里!所以我真的不知道是什么导致了问题,但由于代码在没有这 2 行注释掉的行和其他修改的情况下工作,所以我就这样离开了。

我希望这个答案会在某个时候对某人有所帮助......

于 2011-03-23T15:53:12.297 回答