2013-09-27 3 views
0

цели использования HttpURLConnection внутри AsyncTask, когда я отменить AsyncTask и запрос прервать или отменить подключение при AsyncTask купированы нормально, но HttpURLConnection еще посылает запрос и возвращают со значениями от сервераandroid HttpURLConnection не отсоединяется?

, как я могу сделать HttpURLConnection полной остановки отменить все запросы или прервать запрос?

это код я использую

public static String post_string(String url, String urlParameters) throws IOException 
    { 

     HttpURLConnection conn = null; 

     try { 
       conn = (HttpURLConnection) new URL(url).openConnection(); 
      } catch (MalformedURLException e) { 
      Log.e(Logger, "MalformedURLException While Creating URL Connection - " + e.getMessage()); 
      throw e; 
      } catch (IOException e) { 
       Log.e(Logger, "IOException While Creating URL Connection - " + e.getMessage()); 
      throw e; 
      } 

     conn.setDoOutput(true); 

     conn.addRequestProperty("User-Agent", "Mozilla/5.0"); 
     conn.setRequestProperty("Accept-Charset", "UTF-8"); 
     conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     //if has Post inputs 
     conn.setRequestProperty("Content-Length", Integer.toString(urlParameters.length()));  

     OutputStream os = null; 
     System.setProperty("http.keepAlive", "false"); 

     try { 
      os = conn.getOutputStream(); 
     } catch (IOException e) { 
     Log.e(Logger, "IOException While Creating URL OutputStream - " + e.getMessage()); 
     throw e; 
     } 
     try { 
      os.write(urlParameters.toString().getBytes()); 

     } catch (IOException e) { 
     Log.e(Logger, "IOException While writting URL OutputStream - " + e.getMessage()); 
     throw e; 
     } 
     InputStream in = null; 
     try { 
      in = conn.getInputStream(); 
     } catch (IOException e) { 
     Log.e(Logger, "IOException While Creating URL InputStream - " + e.getMessage()); 
     throw e; 
     } 
     String output = null; 
     try { 
      output = slurp(in); 
     } catch (IOException e) { 
      Log.e(Logger, "IOException While Reading URL OutputStream - " + e.getMessage()); 
      throw e; 
     } finally { 
     try { 
      os.close(); 
      in.close(); 
      } catch (IOException e) { 
      Log.e(Logger, "IOException While Closing URL Output and Input Stream - " + e.getMessage()); 
     } 
     } 
     conn.disconnect(); 

     Log.i("Server output " , output); 
     return output; 
    } 
    private static String slurp(InputStream in) throws IOException 
     { 
      StringBuffer out = new StringBuffer(); 

      byte[] b = new byte[4096]; 

       for (int n; (n = in.read(b)) != -1;) { 

       out.append(new String(b, 0, n)); 

      } 

      return out.toString(); 
    } 

и это то, что я использую, чтобы Прервать соединение

conn.disconnect(); 

любой совет, как отменить?

ответ

1

После остановки AsyncTaskmTask.cancel(true); как просто позвоните conn.disconnect();

+0

я сделал, но сопп до сих пор работает! его вернули со значениями с сервера и его сообщение на сервер, это действительно странно. –

+0

вы его отлаживали? после разъединения никакой сокет не открывается и уверен, что никакие данные не возвращаются с сервера, не размещайте весь ваш соответствующий код –

+0

да, я отлаживал его, а серверный сервер LogCat возвращал информацию после отключения разъема! доза это происходит, потому что цель с помощью 'slurp (InputStream in)'? –

Смежные вопросы