Собственно, функционала мобильного приложения оказалось недостаточным для работы.
Поэтому решено написать своего клиента для обращения к существующему веб-сервису с помощью ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar
и так как в jave я не настолько силен - никак не могу вызвать элементарную функцию которая передает с мобильного клиента строку на сервер и ее же возвращает.
Перерыл все поиски.
Может кто поможет с проблемой или хотя бы носом тыкнет.
работаю в Андроид Студио - отладку включить не могу - виртуальная машина не позволяет запустить виртуальный эмулятор
Поэтому решено написать своего клиента для обращения к существующему веб-сервису с помощью ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar
и так как в jave я не настолько силен - никак не могу вызвать элементарную функцию которая передает с мобильного клиента строку на сервер и ее же возвращает.
Перерыл все поиски.
Скрытый текст |
---|
Мой код:
public class SoapConnection { private static final String NAMESPACE = "http://win-2008.auto.local";; private static String URL = "http://win-2008.auto.local/alfa_n/ws/auto/";; private static final String METHOD_NAME = "test"; + Code private static final String SOAP_ACTION = "http://win-2008.auto.local/alfa_n/ws/auto/test";; SoapObject request; SoapSerializationEnvelope envelope; HttpTransportSE httpTransportSE; List<HeaderProperty> headerList; String result; public String TestConnection(String arg){ SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("arg", arg); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE httpTransportSE = new HttpTransportSE(URL); httpTransportSE.debug = true; List<HeaderProperty> headerList = new ArrayList<HeaderProperty>(); headerList.add(new HeaderProperty("Authorization", "Basic " + org.kobjects.base64.Base64.encode("Администратор:123аа".getBytes()))); try { httpTransportSE.call(SOAP_ACTION, envelope, headerList); } catch (Exception e) { e.printStackTrace(); return e.getLocalizedMessage(); } SoapObject Sresult = (SoapObject)envelope.bodyIn; result = Sresult.getProperty("result").toString(); return result; } } выдает мне ошибку: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject |
Может кто поможет с проблемой или хотя бы носом тыкнет.
работаю в Андроид Студио - отладку включить не могу - виртуальная машина не позволяет запустить виртуальный эмулятор
По теме из базы знаний
- Кредитный калькулятор на 1с для Android
- School 7.1.9 программа (на 1С для Android и Windows) для обучения детей (4-12 лет) математике
- Мобильное приложение на 1С "Выполнение произвольного кода 1С на Android"
- Внешние компоненты. Мобильное приложение 1С
- Bluetooth сканер штрихкодов и мобильное приложение 1С (Android)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
что то мне подсказывает, что вы возвращаете не xdto пакет, а просто строку.
В этом случае - это не надо:
а просто:
В этом случае - это не надо:
SoapObject Sresult = (SoapObject)envelope.bodyIn;
result = Sresult.getProperty("result").toString();
а просто:
Object response= Sresult.getResponse();
Попробую поднять тему.
Каким то образом у меня получилось достучаться до web-сервиса 1С.
И возвращаясь к тому проекту теперь у меня ошибка:
expected: START_TAG {http://www.w3.org/2003/05/soap-envelope }Envelope
Код функции в 1С:
Вызов
httpTransportSE.call(SOAP_ACTION, envelope);
вызывает исключение
Из мобильного приложения 1С все проходит отлично
В эмуляторе получается получить описание сервиса в браузере
так же не причем и авторизация - с неправильным логином/паролем идет ошибка "401"
Каким то образом у меня получилось достучаться до web-сервиса 1С.
И возвращаясь к тому проекту теперь у меня ошибка:
expected: START_TAG {
@Override
protected void onPreExecute(){
super.onPreExecute();
request = new SoapObject("http://" + ServiceName, MethodName);
if (MethodName.equals("TestConnection")){
request.addProperty("usr", "user");
}
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setOutputSoapObject(request);
httpTransportSE = new HttpTransportBasicAuthSE("http://"+ServerName+"/"+BaseName+"/ws/"+ServiceName+"/?wsdl", "Admin", "123321");
httpTransportSE.debug = true;
SOAP_ACTION = "http://"+ServiceName+"/"+MethodName;
}
@Override
protected Void doInBackground(Void... params){
try {
httpTransportSE.call(SOAP_ACTION, envelope);
} catch (Exception e){
e.printStackTrace();
}
return null;
}
ПоказатьКод функции в 1С:
Функция TestConnection(usr)
Возврат "ОК";
КонецФункции
Вызов
httpTransportSE.call(SOAP_ACTION, envelope);
вызывает исключение
Из мобильного приложения 1С все проходит отлично
В эмуляторе получается получить описание сервиса в браузере
так же не причем и авторизация - с неправильным логином/паролем идет ошибка "401"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот