2012-02-10 34 views
15

Trên Android 2.1/2.2 tôi sử dụng DefaultHttpClient được tìm thấy trong Android SDK.Giá trị mặc định cho kết nối và thời gian chờ socket trong DefaultHttpClient trên Android là gì?

Apache nói trong tài liệu của họ có 2 timeout:

  • CoreConnectionPNames.SO_TIMEOUT = 'http.socket.timeout': xác định thời gian chờ ổ cắm (SO_TIMEOUT) trong mili giây, đó là thời gian chờ cho chờ đợi dữ liệu hoặc, đặt khác nhau, một khoảng thời gian không hoạt động tối đa giữa hai gói dữ liệu liên tiếp). Giá trị thời gian chờ bằng 0 được hiểu là thời gian chờ vô hạn. Tham số này mong đợi một giá trị của kiểu java.lang.Integer. Nếu tham số này không được thiết lập, hoạt động đọc sẽ không hết thời gian chờ (vô hạn thời gian chờ).

  • CoreConnectionPNames.CONNECTION_TIMEOUT = 'http.connection.timeout': xác định thời gian chờ bằng mili giây cho đến khi kết nối được thiết lập. Giá trị thời gian chờ bằng 0 được hiểu là thời gian chờ vô hạn. Tham số này mong đợi một giá trị của kiểu java.lang.Integer. Nếu tham số này không được thiết lập, các hoạt động kết nối sẽ không hết thời gian chờ (vô hạn thời gian chờ).

Tôi đã thử tìm kiếm các nguồn Android cho các giá trị mặc định cho 2 thời gian chờ này nhưng không thể tìm thấy. Có ai biết giá trị mặc định cho những thời gian chờ này không? Tôi muốn nhận được một liên kết đến các nguồn mà các giá trị được thiết lập hoặc một tài liệu chính thức về điều này (so với chỉ để nghe một ý kiến).

+0

có thể giúp này: 'thời gian chờ dài = stub._getServiceClient() .getOptions() .getTimeOutInMilliSeconds (); – Danijel

Trả lời

2

Sẽ không bạn có thể nhận được mặc định (hoặc bất kỳ giá trị này được thiết lập) sử dụng giống như sau:

DefaultHttpClient h; 
// ... 
Log.d(TAG, "http.socket.timeout: " + 
     h.getParams().getParameter("http.socket.timeout")); 
Log.d(TAG, "http.connection.timeout: " 
     + h.getParams().getParameter("http.connection.timeout")); 

Đó là giá trị một shot nếu bạn thực sự muốn biết những gì các giá trị mặc định (thay vì chỉ tự thiết lập các giá trị).

+0

Nó trả về 'http.socket.timeout: null' và' http.connection.timeout: null'. Chỉ trong trường hợp - tôi đã gọi điều này sau khi tôi đưa ra yêu cầu loại trừ bất kỳ trạng thái nào không được khởi tạo đầy đủ. Dù sao cũng cảm ơn. –

10

Chỉ cần cố gắng bên dưới bên dưới phần mã:

import android.net.http.AndroidHttpClient; 
... 
     AndroidHttpClient h = AndroidHttpClient.newInstance("My http client"); 
     // ... 
     Log.d(TAG, "http.socket.timeout: " + h.getParams().getParameter("http.socket.timeout")); 
     Log.d(TAG, "http.connection.timeout: " + h.getParams().getParameter("http.connection.timeout")); 

Nó hoạt động trên điện thoại của tôi:

12-02 16:27:54.119 D/Exam(17121): http.socket.timeout: 60000 
12-02 16:27:54.119 D/Exam(17121): http.connection.timeout: 60000 
+0

cảm ơn phản hồi của bạn. –

Các vấn đề liên quan