Использование службы SOAP

Я пытаюсь подключиться к службе SOAP на сайте w3school.com, но она не работает.

Сначала я попробовал так, как читал в обучающих программах. Так я получил stream closed exception.

Потом попробовал использовать класс KeepAliveHttpsTransportSE. Таким образом я получил другой исключение.

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/} Envelope (position:START_TAG <html lang='en-US'>@3:20 in java.io.InputStreamReader@f298f58) e.printStackTrace();

Я работаю над этой проблемой несколько дней, но не понимаю, что делаю не так. Может кто мне поможет.

У меня есть доступ в Интернет, и я включил библиотеку ksoap2-android-assembly-3.6.2-jar-with-dependencies.jar

    public class MainActivity extends AppCompatActivity {
    private Context sContext;


    // SOAP TEST

    private static final String SOAP_ACTION = "https://www.w3schools.com/xml/CelsiusToFahrenheit";
    private static final String METHOD_NAME = "CelsiusToFahrenheit";
    private static final String NAMESPACE = "https://www.w3schools.com/xml/";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        sContext = this;

        myAsyncTask myRequest = new myAsyncTask();
        myRequest.execute();

    }

    private class myAsyncTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {


            String URL = "http://www.w3schools.com/xml/tempconvert.asmx";

            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            request.addProperty("Celsius", "48"); // adding method property here serially

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.implicitTypes = true;
            envelope.setOutputSoapObject(request);
            envelope.dotNet = true;


            KeepAliveHttpsTransportSE keepAliveHttpsTransportSE = new KeepAliveHttpsTransportSE("www.w3schools.com", 443, "", 30000);
            keepAliveHttpsTransportSE.debug = true;

            //HttpTransportSE httpTransport = new HttpTransportSE(URL);
            //httpTransport.debug = true;

            Log.i("mmb Envelop", envelope.toString());


            try {
                //httpTransport.call(SOAP_ACTION, envelope);
                keepAliveHttpsTransportSE.call(SOAP_ACTION, envelope);
            } catch (HttpResponseException e) {
                // TODO Auto-generated catch block
                Log.e("mmb HTTPLOG", e.getMessage());
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.e("mmb IOLOG", e.getMessage());
                // Message: java.io.IOException: Stream closed
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                // TODO Auto-generated catch block
                Log.e("mmb XMLLOG", e.getMessage());
                // Message: org.xmlpull.v1.XmlPullParserException: expected:
                // START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope
                // (position:START_TAG <html lang='en-US'>@3:20 in java.io.InputStreamReader@f298f58)
                e.printStackTrace();
            } //send request

            Object  result = null;
            try {
                result = (Object )envelope.getResponse();
                Log.i("mmb RESPONSE",String.valueOf(result)); // see output in the console
            } catch (SoapFault e) {
                // TODO Auto-generated catch block
                Log.e("mmb SOAPLOG", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
97
1

Ответы 1

Проблема в сервисах w3school, а не в вашем коде .. попробуйте использовать другие сервисы

The error comes up when i hit the services in browser

Другие вопросы по теме