これはちょっと変わったものです。私はHTTPClient 4.1.2を使用しています。そのURLには「#」のようなものがあることがわかるたびに、URLに#がついています。HTTPClient - リダイレクトURLに#アンカーでHTTP GETが壊れています
たとえば、URL http://stks.co/eWt
を取得しようとすると、URL http://news.ichinastock.com/2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/#.Tpw-xG61XjU.twitter
にリダイレクトされます。現在、このURLは公開されていますが、問題はHTTPClientがURIをURI: /2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/#.Tpw-xG61XjU.twitter
に設定してget要求を送信するため、サーバーが404ページが返されないことが返されます。
IE、Firefox、およびcURLから送信されたGETを見ると、URIの末尾から#...が取り除かれます。たとえば、cURL GETリクエストURIはURIとして設定されます。/2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/
- ...削除されました。これは全く同じエントリURL http://stks.co/eWt
です。
テストとして、この生のURLをHTTPClient(つまりHttpGet httpget = new HttpGet("http://news.ichinastock.com/2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/#.Tpw-xG61XjU.twitter");
)に送信すると、同じ404が見つかりませんでした。
HTTPClientの設定は、末尾の#...などの設定をURLから自動的に削除できるように設定できます。または、手動でURLから削除するにはどうすればよいですか(すべてのリダイレクトURLを取得する必要があることに注意してください)。
これは、HTTPを助けることができます。。。: //stackoverflow.com/questions/4251841/400-error-with-httpclient-for-a-link-with-an-anchor –
ええ、私はこの1つを見ました。しかし、問題は、URLに#アンカーがあるかどうかわかりません。すべてのUR Lsは短いURLサービスから来ていますが、この短いURLサービスはURLに#anchorを保持し、HTTPClientはこれを盲目的にリダイレクト301から取り出し、ページを取得しようとします。 – NightWolf