Как добавить тайм-аут к сообщению HTTP

Почему у меня не работает код, Даже соединение устарело, (давно нет ответа от сервера, код не выдает никаких исключений!

try{

    HttpParams httpParameters = new BasicHttpParams();  
    HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
    HttpConnectionParams.setSoTimeout(httpParameters, 3000);
    HttpClient client = new DefaultHttpClient(httpParameters);              
    HttpPost post = new HttpPost("url");  
    post.setParams(httpParameters);
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("ab ", cd));
    post.setEntity(new UrlEncodedFormEntity(nameValuePairs));           
    HttpResponse response = client.execute(post);           
    BufferedReader rd = new BufferedReader(new 

    InputStreamReader(response.getEntity().getContent()));              
    while ((line = rd.readLine()) != null) 
   {

   }
  }
   catch(java.net.SocketTimeoutException e4)
   {
      Toast.makeText(xyz.this, "Your connection is stale", 10000).show();
   }
   catch (IOException e2) 
   {
  Log.d("G22", "Entered Exception");    
   }
   catch (Exception e2) 
   {
      Toast.makeText(xyz.this, "Your connection is stale..", 10000).show();
      e2.printStackTrace();
      Log.d("G22", "Entered Exception");    
   }

person VISHAL DAGA    schedule 30.01.2012    source источник


Ответы (2)


Вы должны использовать HttpClient и HttpPost? Вы можете использовать HttpURLConnection, у которого есть setConnectTimeout(int) метод:

См. мой ответ здесь для примера использования HttpsURLConnection для операции POST.

person dave.c    schedule 30.01.2012
comment
Что такое код соответствия для List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("ab", cd)); Было бы очень полезно и очень признательно, если бы вы могли адаптировать код (как указано в ссылке) и сделать его подходящим, чтобы его можно было использовать здесь. Насколько я видел (во время одного быстрого прогона вашего кода), здесь нет необходимости учитывать файлы cookie и многое другое, как указано в этом коде. - person VISHAL DAGA; 31.01.2012
comment
Строка output — это просто набор пар имя/значение, поэтому у вас будет что-то вроде: String output = "ab="+cd+"&foo="+bar; - person dave.c; 31.01.2012

Вы можете использовать этот код

    HttpTransportSE MyandroidHttpTransport = new HttpTransportSE("http://www.webservicex.net/ConvertWeight.asmx",50000);
    //50000 is the timeout for this connection
person Community    schedule 16.09.2014