2

ksoaplib を使用してwebservice. 場合によっては、サービスが正しく実行されますが、ホスト名が検証されなかった場合は、以下を呼び出すためのコードですwebservice

 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)
4

2 に答える 2

1

ホストを次のように確認します

   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;
 }
}
于 2016-04-12T07:55:02.167 に答える
1

このリンクにはいくつかの原因が考えられます。「承認済み」とマークされた応答はありませんでした。

ここも見てください:

これが発生する理由の 1 つは、サーバーの構成エラーが原因です。サーバーは、アクセスしようとしているサーバーと一致するサブジェクトまたはサブジェクトの別名フィールドを持たない証明書で構成されています。1 つの証明書を多数の異なるサーバーで使用することができます。

たとえば、google.com 証明書をopenssl s_client -connect google.com:443 | openssl x509 -text参照すると、*.google.com をサポートするサブジェクトだけでなく、*.youtube.com、*.android.com などのサブジェクト代替名もサポートされていることがわかります。エラーが発生するのは、接続先のサーバー名が証明書によって許容できるものとしてリストされていない場合のみです。

于 2013-10-04T19:27:13.793 に答える