KeepAliveHttpsTransportSE.java revision 997171ed3fdf8baf96d8fdf9dd3201a459327d89
1997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu/** 2997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Digi-Key 3997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * http://www.digikey.com 4997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 5997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Copyright 2010 Logicopolis Technology Inc. All rights reserved. 6997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * http://www.logicopolis.com 7997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu */ 8997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 9997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupackage org.ksoap2.transport; 10997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 11997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yuimport java.io.IOException; 12997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 13997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu/** 14997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * KeepAliveHttpsTransport deals with the problems with the Android ssl libraries having trouble with certificates and 15997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * certificate authorities somehow messing up connecting/needing reconnects. Added as generic class for SE since it 16997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * might be useful in SE environments as well and can be used as an example to create your own transport 17997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * implementations. 18997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 19997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * @author Manfred Moser <manfred@simpligility.com> 20997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 21997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * @see "http://groups.google.com/group/android-developers/browse_thread/thread/3dcf62e7886a213/21f912bb90a011d6" 22997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * @see "http://code.google.com/p/android/issues/detail?id=7074" 23997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * @see "http://crazybob.org/2010_02_01_crazyboblee_archive.html" 24997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu */ 25997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupublic class KeepAliveHttpsTransportSE extends HttpsTransportSE 26997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu{ 27997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu private final String host; 28997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu private final int port; 29997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu private final String file; 30997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu private final int timeout; 31997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu private ServiceConnection serviceConnection; 32997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 33997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public KeepAliveHttpsTransportSE(String host, int port, String file, int timeout) { 34997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu super(host, port, file, timeout); 35997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.host = host; 36997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.port = port; 37997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.file = file; 38997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.timeout = timeout; 39997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 40997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 41997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu /** 42997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Get a service connection. Returns an implementation of {@link org.ksoap2.transport.ServiceConnectionSE} that 43997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * ignores "Connection: close" request property setting and has "Connection: keep-alive" always set and is uses 44997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * a https connection. 45997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * @see org.ksoap2.transport.HttpTransportSE#getServiceConnection() 46997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu */ 47997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu //@Override 48997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public ServiceConnection getServiceConnection() throws IOException 49997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu { 50997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu if (serviceConnection == null) { 51997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu serviceConnection = new HttpsServiceConnectionSEIgnoringConnectionClose(host, port, 52997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu file, timeout); 53997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu serviceConnection.setRequestProperty("Connection", "keep-alive"); 54997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 55997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return serviceConnection; 56997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 57997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 58997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu} 59