1
那我的樣品!在Android中實現HTTP請求超時的最佳方式是什麼?
private void onGet(String command, int requestType){
HttpGet getRequest = new HttpGet("http://" + getHost() + ":" + getPort() + getServerCgiPath() + command);
Client.sendRequest(getRequest, requestType, getCallBack());
}
...就在那裏我已經建立了我的HttpClient
public class Client {
public static void sendRequest(final HttpUriRequest request,
int RequestType,
ResponseListener callback ) {
(new AsynchronousSender(new DefaultHttpClient(), request, RequestType,
new Handler(), new CallbackWrapper(callback))).start();
}
}
...
public class AsynchronousSender extends Thread {
private DefaultHttpClient httpClient;
private HttpUriRequest request;
private Handler handler;
private CallbackWrapper wrapper;
private int requestType;
protected AsynchronousSender(DefaultHttpClient httpClient, HttpUriRequest request,
int requestType, Handler handler, CallbackWrapper wrapper) {
setRequest (request);
setHandler (handler);
setWrapper (wrapper);
setClient (httpClient);
setRequestType (requestType);
}
public void run() {
try {
final HttpResponse response;
final HttpParams httpParams = getClient().getParams();
HttpConnectionParams.setConnectionTimeout (httpParams, 5000);
HttpConnectionParams.setSoTimeout (httpParams, 5000);
Log.d("Ehome", "before execute reauest");
response = getClient().execute(getRequest());
Log.d("Ehome", "post execute reauest");
int status = response.getStatusLine().getStatusCode();
switch(status){
case HttpStatus.SC_OK:
getWrapper().setResponse(response);
getWrapper().setRequestType(getRequestType());
getHandler().post(getWrapper());
break;
default:
break;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private HttpClient getClient() {
return httpClient;
}
...
是的,我曾嘗試過,但它不起作用。 – Lunatik 2011-03-13 08:52:18
它應該工作 - 也許你必須發佈你如何嘗試它! – FrVaBe 2011-03-13 17:58:26
對不起,我改進了我的示例。 – Lunatik 2011-03-13 19:04:38