HttpsURLConnectionImpl.java revision f6c387128427e121477c1b32ad35cdcaa5101ba3
1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.luni.internal.net.www.protocol.https; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.ProtocolException; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.Proxy; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN andorid-removed 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// copied from newer version of harmony 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// import java.net.Socket; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-removed 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URL; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Principal; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.cert.Certificate; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.List; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Map; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.net.ssl.SSLPeerUnverifiedException; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.net.ssl.SSLSocket; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.luni.internal.nls.Messages; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * HttpsURLConnection implementation. 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class HttpsURLConnection extends javax.net.ssl.HttpsURLConnection { 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Https engine to be wrapped 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final HttpsEngine httpsEngine; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // SSLSocket to be used for connection 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private SSLSocket sslSocket; 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected HttpsURLConnection(URL url, int port) { 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(url); 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine = new HttpsEngine(url, port); 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected HttpsURLConnection(URL url, int port, Proxy proxy) { 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(url); 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine = new HttpsEngine(url, port, proxy); 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getCipherSuite() { 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (sslSocket == null) { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalStateException(Messages.getString("luni.00")); //$NON-NLS-1$ 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return sslSocket.getSession().getCipherSuite(); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Certificate[] getLocalCertificates() { 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (sslSocket == null) { 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalStateException(Messages.getString("luni.00")); //$NON-NLS-1$ 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return sslSocket.getSession().getLocalCertificates(); 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Certificate[] getServerCertificates() 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws SSLPeerUnverifiedException { 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (sslSocket == null) { 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalStateException(Messages.getString("luni.00")); //$NON-NLS-1$ 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return sslSocket.getSession().getPeerCertificates(); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Principal getPeerPrincipal() throws SSLPeerUnverifiedException { 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (sslSocket == null) { 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalStateException(Messages.getString("luni.00")); //$NON-NLS-1$ 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return sslSocket.getSession().getPeerPrincipal(); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Principal getLocalPrincipal() { 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (sslSocket == null) { 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalStateException(Messages.getString("luni.00")); //$NON-NLS-1$ 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return sslSocket.getSession().getLocalPrincipal(); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void disconnect() { 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.disconnect(); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public InputStream getErrorStream() { 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getErrorStream(); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getRequestMethod() { 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getRequestMethod(); 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getResponseCode() throws IOException { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getResponseCode(); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getResponseMessage() throws IOException { 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getResponseMessage(); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setRequestMethod(String method) throws ProtocolException { 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setRequestMethod(method); 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean usingProxy() { 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.usingProxy(); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean getInstanceFollowRedirects() { 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getInstanceFollowRedirects(); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setInstanceFollowRedirects(boolean followRedirects) { 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setInstanceFollowRedirects(followRedirects); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void connect() throws IOException { 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.connect(); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean getAllowUserInteraction() { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getAllowUserInteraction(); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object getContent() throws IOException { 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getContent(); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @SuppressWarnings("unchecked") // Spec does not generify 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object getContent(Class[] types) throws IOException { 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getContent(types); 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getContentEncoding() { 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getContentEncoding(); 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getContentLength() { 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getContentLength(); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getContentType() { 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getContentType(); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long getDate() { 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getDate(); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean getDefaultUseCaches() { 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getDefaultUseCaches(); 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean getDoInput() { 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getDoInput(); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean getDoOutput() { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getDoOutput(); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long getExpiration() { 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getExpiration(); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getHeaderField(int pos) { 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getHeaderField(pos); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Map<String, List<String>> getHeaderFields() { 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getHeaderFields(); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Map<String, List<String>> getRequestProperties() { 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getRequestProperties(); 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void addRequestProperty(String field, String newValue) { 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.addRequestProperty(field, newValue); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getHeaderField(String key) { 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getHeaderField(key); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long getHeaderFieldDate(String field, long defaultValue) { 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getHeaderFieldDate(field, defaultValue); 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getHeaderFieldInt(String field, int defaultValue) { 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getHeaderFieldInt(field, defaultValue); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getHeaderFieldKey(int posn) { 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getHeaderFieldKey(posn); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long getIfModifiedSince() { 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getIfModifiedSince(); 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public InputStream getInputStream() throws IOException { 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getInputStream(); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public long getLastModified() { 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getLastModified(); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public OutputStream getOutputStream() throws IOException { 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getOutputStream(); 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Permission getPermission() throws IOException { 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getPermission(); 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getRequestProperty(String field) { 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getRequestProperty(field); 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public URL getURL() { 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getURL(); 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean getUseCaches() { 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getUseCaches(); 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setAllowUserInteraction(boolean newValue) { 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setAllowUserInteraction(newValue); 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setDefaultUseCaches(boolean newValue) { 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setDefaultUseCaches(newValue); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setDoInput(boolean newValue) { 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setDoInput(newValue); 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setDoOutput(boolean newValue) { 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setDoOutput(newValue); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setIfModifiedSince(long newValue) { 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setIfModifiedSince(newValue); 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setRequestProperty(String field, String newValue) { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setRequestProperty(field, newValue); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setUseCaches(boolean newValue) { 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setUseCaches(newValue); 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setConnectTimeout(int timeout) { 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setConnectTimeout(timeout); 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getConnectTimeout() { 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getConnectTimeout(); 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setReadTimeout(int timeout) { 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpsEngine.setReadTimeout(timeout); 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getReadTimeout() { 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.getReadTimeout(); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toString() { 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpsEngine.toString(); 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * HttpsEngine 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private class HttpsEngine extends HttpURLConnection { 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // In case of using proxy this field indicates 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if it is a SSL Tunnel establishing stage 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private boolean makingSSLTunnel; 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected HttpsEngine(URL url, int port) { 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(url, port); 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected HttpsEngine(URL url, int port, Proxy proxy) { 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(url, port, proxy); 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void connect() throws IOException { 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (connected) { 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (usingProxy() && !makingSSLTunnel) { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // SSL Tunnel through the proxy was not established yet, do so 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project makingSSLTunnel = true; 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // first - make the connection 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.connect(); 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // keep request method 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String save_meth = method; 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make SSL Tunnel 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "CONNECT"; //$NON-NLS-1$ 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project doRequest(); 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project endRequest(); 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // restore initial request method 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = save_meth; 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!connected) { 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IOException(Messages.getString("luni.01", //$NON-NLS-1$ 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project responseMessage, responseCode)); 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if there are some remaining data in the stream - read it out 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN andorid-changed 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // copied from newer version of harmony 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream is = connection.getInputStream(); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-changed 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (is.available() != 0) { 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project is.read(); 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project makingSSLTunnel = false; 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // no need in SSL tunnel 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.connect(); 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!makingSSLTunnel) { 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN andorid-changed 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // copied from newer version of harmony 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sslSocket = connection.getSecureSocket(getSSLSocketFactory(), getHostnameVerifier()); 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setUpTransportIO(connection); 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-changed 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected String requestString() { 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (usingProxy()) { 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (makingSSLTunnel) { 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // we are making the SSL Tunneling, return remotehost:port 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = url.getPort(); 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (port > 0) ? url.getHost() + ":" + port //$NON-NLS-1$ 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project : url.getHost(); 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // we has made SSL Tunneling, return /requested.data 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String file = url.getFile(); 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (file == null || file.length() == 0) { 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = "/"; //$NON-NLS-1$ 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return file; 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.requestString(); 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-removed 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // /** 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * Create the secure socket over the connected socket and verify remote 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * hostname. 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // */ 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // private Socket wrapConnection(Socket socket) throws IOException { 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // String hostname = url.getHost(); 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // // create the wrapper over connected socket 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // sslSocket = (SSLSocket) getSSLSocketFactory().createSocket(socket, 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // hostname, url.getPort(), true); 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // sslSocket.setUseClientMode(true); 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // sslSocket.startHandshake(); 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (!getHostnameVerifier().verify(hostname, sslSocket.getSession())) { 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throw new IOException(Messages.getString("luni.02", hostname)); //$NON-NLS-1$ 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return sslSocket; 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-removed 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 453