對於使用JEE的練習項目,我在Javascript代碼上有一個HTML頁面,即向我的本地服務器發送請求,在互聯網的哪些搜索信息中發出請求GET和POST,視情況而定。但它發生一個GET請求,組成POST請求後,它的使用Java進行GET並添加標頭請求後發生POST錯誤
connection.setRequestMethod("POST");
執行出現異常它出來:「java.lang.IllegalStateException:連接在進步」。於是我決定關閉它在一個try-catch塊的寫入:
try{ con.setRequestMethod("POST"); }catch(Exception ex){}
但是,當我嘗試把標題請求,它已經從服務器的對象「請求」它給
"java.lang.IllegalStateException: Already connected"
但它遵循的唯一的事情就是設置頁眉的功能:
connection.setRequestProperty("header", "content");
如果有人能幫助我解決這個我會提前真的很感謝。
我覺得之前對我的問題的解釋還不夠清楚。 該功能的使用,使請求,並把標題請求,並與他們的價值觀是對對象的要求「的參數是:
public static String obtener_html(String url, HttpServletRequest request,
ArrayList<Key_value> replacements, boolean get){
try {
HttpURLConnection connection;
if(get){ url = data(url, request); }
connection = (HttpURLConnection)(new URL(url).openConnection());
if(get){
connection.setRequestMethod("GET");
set_headers(request, connection, replacements);
if(connection.getDoOutput()){ connection.setDoOutput(false); }
}
else{
connection.setRequestMethod("POST");
set_headers(request, connection, replacements);
if(!connection.getDoOutput()){ connection.setDoOutput(true); }
DataOutputStream writer = new DataOutputStream(connection.getOutputStream());
writer.writeBytes(data(null, request));
writer.flush();
writer.close();
}
int i = connection.getResponseCode();
if(i == 200){
InputStream reader = connection.getInputStream();
Text text = new Text();
int n;
while((n=reader.read()) != -1){ text.add((char)n); }
reader.close();
connection.disconnect();
return text.toString();
}
connection.disconnect();
}
catch(IOException ex){ ex.printStackTrace(); }
return null;
}
在我的代碼:
- 的班級「Key_value」,是由我做的。
- 函數「data(...)」,從對象「request」中獲取參數和值,並將它們放入「connection」對象中。
- 功能「設置標題」,使標題請求相同,但改變標題請求指示。
- 由我製作的「文本」類是爲了加速從文本中連續/順序插入字符。
事實證明,我的服務器提出的第一個請求是一個GET,但是它會在稍後發佈POST時給出錯誤消息。每次調用它時,都會創建一個「連接」對象,並在連接完成之前關閉它,但無論如何,它會給出錯誤消息。我只向兩個IP地址發送請求,但顯然這個URL可能不同。另外,即使沒有必要指出請求是「POST」,因爲控制方法「setDoOutput(...)」的標誌已經是「真」。爲什麼它不允許我把標題請求放在try-catch塊中?我該如何解決這個問題?唯一的例外說,正在進行連接,或者它已經連接,是如果這個函數的調用的對象是一樣的人在第二個電話,或者喜歡放:
connection.disconnect();
它根本沒有效果。爲什麼以及如何解決它?