2013-10-03 3 views
1

Я использую ksoap lib, чтобы позвонить webservice. В некоторых случаях служба запускается правильно, но в случае, когда это дает имя хоста, не было подтверждено. ниже - мой код для звонка webservice.Имя хоста не подтверждено ANDROID

HttpTransportSE httpTransport = new HttpTransportSE(URL, MessageConstant.TIMEOUT_TIME); 
      httpTransport.debug = true; // this is optional, use it if you don't want to use a packet sniffer to check what the sent message was (httpTransport.requestDump) 
      httpTransport.call(SOAP_ACTION, envelope); // send request 

вот мой журнал кошка для той же

java.io.IOException: Hostname 'XXX.XX.XXX.XXX' was not verified 
at libcore.net.http.HttpConnection.verifySecureSocketHostname(HttpConnection.java:223) 
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:446) 
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 
at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:165) 
at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:76) 
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:152) 
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 

ответ

1

Этой связи имеет несколько возможных причин; ни один из ответов не были отмечены "приняты":

Вы должны также посмотреть здесь:

Одной из причин этого может случиться из-за ошибки конфигурации сервера. Сервер настроен с сертификатом, у которого нет объекта , или укажите альтернативные поля имени, соответствующие серверу, с которым вы работаете . Можно использовать один сертификат с многими различными серверами.

Например, глядя на сертификате google.com с openssl s_client -connect google.com:443 | openssl x509 -text вы можете увидеть, что предмет, который поддерживает * .google.com но также при условии альтернативных имен * .youtube.com, * .android.com, и другие. Ошибка возникает только тогда, когда имя сервера, с которым вы подключаетесь , не указано в сертификате как приемлемое.

0

Проверьте свой хост,

HttpsURLConnection.setDefaultHostnameVerifier(new HostVerifier()); 


public class HostVerifier implements HostnameVerifier { 

@Override 
public boolean verify(String hostname, SSLSession session) { 
    Log.i(TAG, "HOST NAME " + hostname); 
    if (hostname.contentEquals("XXX.XX.XXX.XXX")) { 
     Log.i(TAG, "Approving certificate for host " + hostname); 
     return true; 
    } 
    return false; 
} 
} 
Смежные вопросы