参考:http://stackoverflow.com/questions/11537591/resttemplate-default-timeout-value
@Override
@SuppressWarnings("unchecked")
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
try {
final String url = getApplicationContext().getApiUrlBase()
+ "android/register";
Log.d(TAG, url);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders
.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(
formData, requestHeaders);
RestTemplate restTemplate = new RestTemplate(true);
if (restTemplate.getRequestFactory() instanceof SimpleClientHttpRequestFactory) {
((SimpleClientHttpRequestFactory) restTemplate
.getRequestFactory()).setConnectTimeout(10 * 1000);
((SimpleClientHttpRequestFactory) restTemplate
.getRequestFactory()).setReadTimeout(10 * 1000);
} else if (restTemplate.getRequestFactory() instanceof HttpComponentsClientHttpRequestFactory) {
Log.d("HTTP", "HttpClient is used");
((HttpComponentsClientHttpRequestFactory) restTemplate
.getRequestFactory()).setReadTimeout(10 * 1000);
((HttpComponentsClientHttpRequestFactory) restTemplate
.getRequestFactory()).setConnectTimeout(10 * 1000);
}
Map<String, Object> responseBody = restTemplate.exchange(url,
HttpMethod.POST, requestEntity, Map.class).getBody();
Log.d(TAG, responseBody.toString());
registerResponse = extractRegisterResponse(responseBody);
} catch (Exception e) {
Log.e(TAG, e.getLocalizedMessage(), e);
this.exception = e;
if( e.getCause() instanceof ConnectTimeoutException )
{
System.out.println("ConnectionTimeoutException");
}
if( e instanceof ResourceAccessException)
{
System.out.println("ResourceAccessException");
}
registerResponse = null;
}
return null;
}
@Override
protected void onPostExecute(Void v)
{
if (exception != null) {
String message;
if( exception instanceof HttpClientErrorException )
{
System.out.println("HttpClientErrorException");
}
if (exception instanceof HttpClientErrorException
&& ((((HttpClientErrorException) exception).getStatusCode() == HttpStatus.BAD_REQUEST)
|| ((HttpClientErrorException) exception).getStatusCode() == HttpStatus.UNAUTHORIZED)) {
message = "Your email or password was entered incorrectly.";
} else if (exception instanceof DuplicateConnectionException) {
message = "The connection already exists.";
} else if(exception instanceof ResourceAccessException && exception.getCause() instanceof ConnectTimeoutException){
message = "connect time out";
}
else {
Log.e(TAG, exception.getLocalizedMessage(), exception);
message = "A problem occurred with the network connection. Please try again in a few minutes.";
}
displayRegisterError(message);
}
if( registerResponse != null )
{
switch( registerResponse.getReturncode() )
{
case 200:
displayRegisterError("register success");
break;
case 600:
displayRegisterError("empty email or password");
break;
case 601:
displayRegisterError("duplicate email");
break;
default:
break;
}
}
}