0

サーバー証明書を読み取り、サーバーへの SSLSocket 接続を行うコードがあります。以下は、高レベルのコードです。

// Create logon request XML in SOAP
SoapObject logonRq = new SoapObject(Constants.NAMESPACE, "LogonRq");
signonRQ.addProperty("UserName", username);
signonRQ.addProperty("Password", passwd);


try {
        HttpsTransportSE transport = new HttpsTransportSE(Constants.Host, Constants.Port, "", 500000);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(org.ksoap2.SoapEnvelope.VER10);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(logonRq);
        envelope.setAddAdornments(false);
        envelope.implicitTypes = true;
        transport.debug = true;

        HttpsServiceConnectionSE sc = (HttpsServiceConnectionSE) transport.getServiceConnection();
        sc.setSSLSocketFactory(GetsslContext.getSSLSocketFactory());
        transport.call(Constants.SOAP_ACTION, envelope);
        SoapObject response = (SoapObject) envelope.bodyIn;

    } catch (Exception e) {
        e.printStackTrace();
    }

今私の要件は、サーバーの応答を受信し、別のクライアント要求を送信することです。そのために、次のことをもう一度実行する必要がありますか?

HttpsTransportSE transport = new HttpsTransportSE(Constants.Host, Constants.Port, "", 500000);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(org.ksoap2.SoapEnvelope.VER10);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(logonRq);
        envelope.setAddAdornments(false);
        envelope.implicitTypes = true;
        transport.debug = true;

        HttpsServiceConnectionSE sc = (HttpsServiceConnectionSE) transport.getServiceConnection();
        sc.setSSLSocketFactory(GetsslContext.getSSLSocketFactory());

transport.call(Constants.SOAP_ACTION, envelope);

または、単に以下のステートメントを呼び出すことができますか?

transport.call(Constants.SOAP_ACTION, envelope);

基本的に、コードを効率的にして、不要なソケット/HTTPS 呼び出しを行わないようにするにはどうすればよいでしょうか?

4

0 に答える 0