質問

ようにしているプログラムを書くい自動検査もwebapp.そのためには、オープン接続用のHttpURLConnectionの

のページはそのようにしている試験を行い302リダイレクト.私の試験のようなコードになります:

URL currentUrl = new URL(urlToSend);
HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection();
connection.connect();
system.out.println(connection.getURL().toString());

もうurlToSendは http://www.foo.com/bar.jsp, このページにリダイレクトする http://www.foo.com/quux.jsp.私のprintln書印刷 http://www.foo.com/quux.jsp, ですよね?

間違っています。

のリダイレクトなしでプリントアウトしたりすることで元のURL。しかし、変更した場合、購入したスイッチに接続します。connect()ラインに接続します。getResponseCode()で魔法です。

URL currentUrl = new URL(urlToSend);
HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection();
//connection.connect();
connection.getResponseCode();
system.out.println(connection.getURL().toString());

なぜ私がこの的に振る舞えるのでしょうか?にしてるわけではありませんので何が悪いのでしょうか。

のです。

役に立ちましたか?

解決

connect()方法は、単に接続を作成します。あなたは応答が返され、処理されるために(getInputStream()getResponseCode()、またはgetResponseMessage()を呼び出すことによって)要求をコミットする必要があります。

他のヒント

connect() メソッドの実装は、URLConnectionクラスは、オーバーライドされないかぎり、 HttpURLConnection クラスです。

のURLConnectionクラスの知らないHTTPうべきではないのHTTPリダイレクトした場合といえどもをリアル接続します。

したい場合に固有の行動は、HTTPプロトコル、おそらくしたいこだわる方法で実施され、HttpURLConnectionのクラスとしてのgetResponseCode()メソッドです。

あなたのonCreate

で次のように追加します。
StrictMode.ThreadPolicy policy = new StrictMode.
ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); 

あなたは、ApacheからのHttpClient に使用していないのはなぜ。

setFollowRedirectsをお試しくださいに、それが役立つかもしれないと。実際には、最初の(それがデフォルトでtrueですので、可能性は低い)、それが問題だかどうかを確認するためにgetFollowRedirectsを試してみてください。

編集をこれはあなたの問題ではない場合、私はあなたがgetResponseCodeでそうであるように(接続から何かを読んしようとするだろうが、私はまたしてみてください、すべてのものを読むことへのリダイレクトが発生するかどうかを確認するためにgetHeaderFieldう)尊重されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top