2

ASP.NET Web サイトから 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.jphelemons.nl/post/Google-URL-shortener-API-%28googl%29-C-sharp-class-C.aspx

キーがローカル コンピューターでのみ機能し、他のコンピューターでは機能しない可能性はありますか? (別の Google アカウントを使用して) 別のキーを取得しましたが、ローカル コンピューターとテスト サーバーの両方で同じエラー (403) が表示されます。

4

2 に答える 2

2

Scott Mitchell によるチュートリアルに従って、いくつかの変更を加え、次のコード行を変更します。

まず、代わりに:

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

私が使用した:

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

次に、次の 2 行をコメントアウトしました。

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

理由はわかりませんが、突然動作するようになりました。そこで、私が行った 3 つのシンニングのどれが問題を引き起こしたかを確認したかったので、それぞれを返品しましたが、-TADA-3 つすべてが戻ってきても、まだ機能します! 何が問題の原因なのかは本当にわかりませんが、コードはコメントアウトされた2行と他の変更なしで機能するため、そのままにしておきます。

この回答がいつか誰かの役に立てば幸いです...

于 2011-03-23T15:53:12.297 に答える
2

APIが特定のPCにリンクされているとは思えません。プログラムが送信しているリクエスト (URL とヘッダーの両方) を確認する必要があります。それらは何らかの形で異なっている必要があります。サーバーは、Apache などの何らかのプロキシの背後にありますか? 正しく構成されていない場合、これはリクエストを混乱させている可能性もあります。また、リクエストが正しくエンコードされていることを確認してください。

于 2011-03-23T12:59:17.250 に答える