可能是谷歌网址缩短API密钥只能在1台计算机上工作吗?

时间:2011-03-23 12:20:19

标签: asp.net url-shortener google-url-shortener

我正在使用ASP.NET网站上的Google URL Shortener。有用 从我的localhost很好,但在测试服务器上我得到以下内容 错误:

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)。

2 个答案:

答案 0 :(得分:2)

我非常怀疑API是否与特定的PC相关联。您需要检查程序发送的请求(URL和标头),它们必须以某种方式不同。您的服务器是否支持某种代理 - 例如Apache?如果没有正确配置,这也可能会破坏请求。还要确保您的请求编码正确。

答案 1 :(得分:2)

我根据tutorial by 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个回到那里!所以我真的不知道是什么导致了这个问题,但是由于代码工作没有那些注释掉的行,而另一个修改,我就是这样离开的。

我希望这个答案可以帮助某个人......