Как узнать, действительно ли HttpURLConnection отправил запрос на базовый сокет? - PullRequest
0 голосов
/ 19 мая 2011

AFAIK HttpURLConnection фактически не отправляет запрос, пока мы не попытаемся прочитать входные данные. Однако, если здесь происходит исключение, я не могу различить случай, когда запрос не был отправлен, и случай, когда запрос был отправлен, но произошла какая-то другая ошибка (возможно, мы вошли в туннель, поэтому не смогли получить ответ ).

Есть ли способ запросить и выяснить, был ли запрос фактически отправлен или нет?

1 Ответ

1 голос
/ 19 мая 2011

Возможно, вам повезет с

URL url = new URL(serverUrl);
connection = (HttpURLConnection) url.openConnection();
// write to connection output stream (don't forget to flush())
connection.getResponseCode();

Вы можете получить полный список кодов ответов на http://download.oracle.com/javase/1,5.0/docs/api/java/net/HttpURLConnection.html

Сказав, что я могу представить, что ваши данные выходят полностью мгновеннопрежде чем войти в туннель и соединение не имеет установленного кода ответа, в этом случае вы попытаетесь отправить еще раз (возможно, с использованием уникального «идентификатора отправки»), чтобы слушатель мог игнорировать вашу повторную отправку, но все же мог сообщить вам,оно было получено.

...