У меня есть простой HttpServlet, работающий на Tomcat, который обслуживает текстовый файл длиной 3,5 м.
Я получаю доступ к сервлету из iOS (используя ASIHTTPRequest), и после 2 я делаю «отмена»секунд (то есть задолго до того, как все данные поступят ...)
На клиентской стороне я определенно вижу, что транзакция действительно отменена.
Проблема в том, что я неУ нас нет никакого тривиального способа узнать об этом на стороне сервера, и, следовательно, похоже, что сервлет всегда отправляет полные 3.5M.
Я бы ожидал что-то вроде исключения, но это не такпроисходит ...
Код сервлета выглядит следующим образом:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
{
int read = 0;
int total = 0;
try
{
response.setContentType("text/html");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/WarAndPeace.html");
byte[] bytes = new byte[1024];
OutputStream os = response.getOutputStream();
while ((read = is.read(bytes)) != -1)
{
os.write(bytes, 0, read);
total += read;
}
os.flush();
os.close();
is.close();
}
catch (Exception e)
{
// NEVER REACHED
}
/*
* THIS PART IS ALWAYS REACHED WITH total = 3.5M BYTES
* NO MATTER IF THE CONNECTION WAS CANCELED ON THE CLIENT-SIDE
*
}
Есть какие-нибудь подсказки?Спасибо!
NB. Я также попытался с правильно отмененным NSURLConnection (вместо ASIHTTPRequest), но результаты схожи.