2015-01-22 3 views
2

Я использовал библиотеку от http://loopj.com/ для запроса async post, но я получаю socketTimeOutException, я попытался установить client.setTimeOut (50000); все еще получая такую ​​же ошибку.LoopJ Android Asynchronous Http Client - java.net.SocketTimeoutException

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    AsyncHttpClient client = new AsyncHttpClient(); 
    RequestParams params = new RequestParams("type", "myType"); 
    client.post("service.php", params, new AsyncHttpResponseHandler() { 

     @Override 
     public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 
      System.out.println("Failure"); 
     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 
      System.out.println("Success"); 
     } 

    }); 
} 

} 

я попробовал тот же URL на HttpClient и она работает:

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost("http://www.example.com/service.php"); 
    try { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("type", "myType")); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = client.execute(post); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     String line = ""; 
     while ((line = rd.readLine()) != null) { 
      System.out.println(line); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

Никто не знает ответа? – kakajan

ответ

0

я обнаружил, что на самом деле AsyncHttpClient по умолчанию 10 секунд ожидания. Если ваш запрос занимает больше времени, вы увидите брошенное SocketTimeoutException.

Корректировка на самом деле проста. Просто выполните следующие действия:

final int DEFAULT_TIMEOUT = 20 * 1000; 
AsyncHttpClient aClient = new AsyncHttpClient(); 
aClient.setTimeout(DEFAULT_TIMEOUT); 
//... continue as normal 
Смежные вопросы