[解決済み] "Illegal State Exception: HttpURLConnection使用時の "Already Connected "について
2022-03-13 13:39:54
質問
DoOutputをtrueに設定すると、不正な状態の例外が発生します。
public boolean sendLinksToMaster(String ipport, List<String> links){
boolean sent = false;
String[] tokens = ipport.split(":");
String data = edu.cis555.searchengine.utils.Utils.generateLinks(links);
HttpURLConnection conn=null;
try{
String encodedData = URLEncoder.encode(data, "UTF-8");
try{
String ip =tokens[0];
String port = tokens[1];
String path = edu.cis555.searchengine.utils.Constants.URL_ADD_LINK;
System.setProperty("http.keepAlive", "false");
URL u = new URL("http", ip, Integer.parseInt(port),"/"+path);
conn = (HttpURLConnection)u.openConnection();
//ERROR IN THIS LINE
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream stream = conn.getOutputStream();
stream.write(encodedData.getBytes());
stream.close();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK)
sent=true;
// LOG.debug(conn.getResponseCode());
conn.disconnect();
}catch(MalformedURLException mfe){
LOG.debug(mfe.getMessage());
if(conn!=null){
conn.disconnect();
}
}catch(IOException ioe){
LOG.debug(ioe.getMessage());
if(conn!=null){
conn.disconnect();
}
}
}catch(Exception e){
LOG.debug(e.getMessage());
if(conn!=null){
conn.disconnect();
}
}
return sent;
}
同上で表示されるスタックトレースは
java.lang.IllegalStateException: Already connected
at java.net.URLConnection.setDoOutput(Unknown Source)
at edu.upenn.cis455.xpathengine.utils.pool.ThreadPool.sendLinksToMaster(ThreadPool.java:357)
at edu.upenn.cis455.xpathengine.utils.pool.ThreadPool$Worker.processAndAddToQueue(ThreadPool.java:314)
at edu.upenn.cis455.xpathengine.utils.pool.ThreadPool$Worker.run(ThreadPool.java:269)
at java.lang.Thread.run(Unknown Source)
リクエストの送信で間違っていることは何もありません。何が足りないのか、何が間違っているのか、どなたかご指摘ください。
解決方法を教えてください。
私も同じ問題に遭遇し、解決しました。私の場合は、「Space」の「Watch」を忘れていたのが原因でした。
connection.getResponseCode()
NetBeansのデバッグインターフェイスで。同じ間違いをする他の人を助けるかもしれないことを望みます。
など、リクエストのレスポンス値に関連するwatchがある場合、そのwatchを使用することができます。
getResponseCode()
,
getResponseMessage()
,
getInputStream()
または単に
connect()
デバッグモードでこのエラーが発生します。
これまでのすべてのメソッドは、暗黙のうちに
connect()
を作成し、リクエストを発行します。そのため
setDoOutput
接続はすでに確立されています。
関連
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
ファインバグタイプ
-
Dateが型に解決できない問題を解決する
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
org.glassfish.jersey.servlet.ServletContainer
-
[解決済み] Thread.sleep(x)またはwait()を使用すると例外が発生します。
-
[解決済み】HttpURLConnectionにNameValuePairを使用してPOSTでパラメータを追加する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
HttpClientがGZIP形式でない場合の対処法
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
ローカルリソースのロードが許可されていない場合の解決策