Должен ли я получить код ответа с сервера?
У меня есть следующий код
URL url = new URL(pushURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/restService");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
if(conn.getResponseCode() == 200){
logger.debug("Success");
} else {
logger.debug("Time out set for 30 seconds");
}
String input = writer.getBuffer().toString();
OutputStream os = conn.getOutputStream();
Если я не заинтересован в ответе с сервера, могу ли я удалить следующий код?
if(conn.getResponseCode() == 200){
logger.debug("Success");
} else {
logger.debug("Time out set for 30 seconds");
}
Учитывая, что код, как он есть, вызывает java.net.ProtocolException
Есть ли способ по-прежнему захватить ответ сервера и выполнить conn.getOutputStream();
? В каком порядке? Каковы последствия отсутствия получения ответа помимо очевидных проблем с отчетностью?
1 ответ
Проблема в том, что, получив код ответа, вы отправили свое сообщение. В вашем коде вы ничего не записываете в поток вывода до того, как получите ответ. Таким образом, вы по сути ничего не отправляете по почте (только эта информация заголовка), получаете код ответа, а затем пытаетесь снова написать в него, что недопустимо. Что вам нужно сделать, это сначала записать в выходной поток, а затем получить код ответа следующим образом:
public static void main(String[] args) throws IOException {
URL url = new URL(pushURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/restService");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
String input = writer.getBuffer().toString();
OutputStream os = conn.getOutputStream();
for (char c : input.toCharArray()) {
os.write(c);
}
os.close();
if(conn.getResponseCode() == 200){
System.out.println("Success");
} else {
System.out.println("Time out set for 30 seconds");
}
}
Вот небольшой урок: