|
|||
PsyTech
25.08.17 — 15:03 |
Всем привет! Как вернуть больше 1 параметра сервисом 1с? |
||
lodger
1 — 25.08.17 — 15:04 |
напихать их в xml. |
||
PsyTech
2 — 25.08.17 — 15:06 |
(1) И вернуть 1 парметр — текст XML. Вопрос — как вернуть несколько параметров? |
||
lodger
3 — 25.08.17 — 15:09 |
(2) напихать их в xml. |
||
PsyTech
4 — 25.08.17 — 15:12 |
(3) аа, вот теперь понятно) |
||
Fragster
5 — 25.08.17 — 15:41 |
поставь галку у параметра |
||
PsyTech
6 — 28.08.17 — 08:04 |
Ну так вот… Есть у сервиса 2 выходных параметра: par1, par2. Функция сервиса должна вернуть текст (строка) в формате xml, где всего 2 тэга: par1, par2? |
||
PsyTech
7 — 28.08.17 — 08:06 |
(5) Какую? «Возможно пустое значение» ? |
||
PsyTech
8 — 28.08.17 — 08:50 |
Ошибка разбора SOAP сообщения: неизвестный параметр |
||
W-W-w
9 — 28.08.17 — 09:00 |
если не через параметры
Тип возвращаемого значения
Structure (http://v8.1c.ru/8.1/data/core) //Отдаем
… Структура = Новый Структура; Структура.Вставить("Результат",Истина); Структура.Вставить("ПараметрN","Значение"); СтруктураXDTO = СериализаторXDTO.ЗаписатьXDTO(Структура); Возврат СтруктураXDTO; … //Получаем
СтруктураВозврата = СериализаторXDTO.ПрочитатьXDTO(ОтветXDTO);
|
||
PsyTech
10 — 28.08.17 — 09:24 |
(9) К сожалению нужно именно через параметры. Чтоб в wsdl они были со своими типами. |
||
PsyTech
11 — 28.08.17 — 09:30 |
«Обязательное возвращаемое значение не задано» |
||
PsyTech
12 — 28.08.17 — 09:37 |
Неужели никто не возвращал больше 1 параметра? |
||
Я_в_каске
13 — 28.08.17 — 09:39 |
тебе написали, верни структуру. потом после получения структуры разбери ее и выясни что в структуру засунули. |
||
PsyTech
14 — 28.08.17 — 10:20 |
(13) Получать будет другая система, и им нужно именно так. В общем передал xml и получил желаемый ответ. Всем спасибо! |
||
PsyTech
15 — 28.08.17 — 10:33 |
О! и без xml все работает |
||
Fragster 16 — 28.08.17 — 11:25 |
(7) https://i.imgur.com/i039Qtv.png (11) так его же задать надо |
Программист всегда исправляет последнюю ошибку. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Здравствуйте
Столкнулся с такой проблемой.
Мне нужно добавлять клиента в базу 1с при помощи SOAP.
Но при обращении к функции я получаю ошибку
Uncaught SoapFault exception: [soap:Client] Неизвестная ошибка. Недостаточно параметров операции по причине: Недостаточно параметров операции in /1c/test.php:18 Stack trace: #0 /test.php(18): SoapClient->__soapCall('CreateClient', Array) #1 {main} thrown in /home/lenzcars/chaly.xyz/aura/1c/test.php on line 18
Код
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient('http://myhost/A2-TEST/ws/ChatBot?wsdl', array(
'login' => "mylogin", 'password' => "mypassword"
));
//array(2) {
// [0]=> string(59) "CreateClientResponse CreateClient(CreateClient $parameters)"
// [1]=> string(59) "CreateClientResponse CreateClient(CreateClient $parameters)" }
var_dump($client->__getFunctions());
$params = array('name' => 'testname', 'surname' => 'testsurname', 'phone' => '0660000000', 'ID_bot' => '123456', 'clubID' => '123456');
$xml = $client->__soapCall('CreateClient', $params);
var_dump($xml);
?>
<xs:element name="CreateClient">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" nillable="true"/>
<xs:element name="surname" type="xs:string" nillable="true"/>
<xs:element name="phone" type="xs:string"/>
<xs:element name="ID_bot" type="xs:string"/>
<xs:element name="clubID" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Это мой первый опыт работы с SOAP)
Не могу найти решение.
Буду благодарен любой помощи
За последние 24 часа нас посетили 9748 программистов и 880 роботов. Сейчас ищут 339 программистов …
-
trafficsemaphore
Активный пользователь- С нами с:
- 23 апр 2009
- Сообщения:
- 1
- Симпатии:
- 0
Есть проблема, по которой мало информации в Сети, поэтому решит задать вопрос на форуме.
Есть веб-сервис 1с поддерживающий обращение через SOAP. Веб-сервис содержит метод «test_ws» с параметром на входе «in_query». Код вызова вебсервиса такой:
-
//Логин и пароль кстати лучше использовать английские, иначе не работает авторизация
-
$client = new SoapClient(«http://192.168.0.1/ws/test.1cws?wsdl»,
-
array(«login» => «login», «password» => «password»,’encoding’=>’UTF-8′));
На последней строчке код дает ошибку: Fatal error: Uncaught SoapFault exception: [soap] Ошибка разбора SOAP сообщения: параметр не найден.
Очевидно что метод не может получить параметр. НЕ работают и следующие варианты вызова метода, которые я нашел в различных примерах и использовал:-
$client->test_ws(array(new SoapParam(«test», «in_query»)));
-
$client->test_ws(«in_query»);
Ошибка одна и та же в определении парамера. Подскажите, если кто сталкивался с такой проблемой, либо просто имеет идеи на этот счет. Заранее спасибо.
-
Попробуй
-
$result = $client->test_ws(array(‘in_query’ => ‘value’));
-
ksoap2 generates xml like this
<?xml
version="1.0"
encoding="UTF-8"
?>
<env:Envelope>
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<env:Body>
<tns:GetListClient>
xmlns:tns="http://www.spr.org"
hello
</tns:GetListClient>
</env:Body>
</env:Envelope>
But web-service 1c, excepts only such xml-structured files
<soap:Envelope>
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
<soap:Header/>
<soap:Body>
<m:GetListClient>
xmlns:m="http://www.spr.org"
<m:Param/>
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</m:GetListClient>
</soap:Body>
</soap:Envelope>
as you see the difference is in this params
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Android code
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("Celsius", "23");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setOutputSoapObject(request);
Log.e("request", request.toString());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope,headerProperty);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
resultString = response.toString();
Log.e("requestDumpCelsius",androidHttpTransport.requestDump);
Log.e("responseDumpCelsius",androidHttpTransport.responseDump);
} catch (Exception e) {
e.printStackTrace();
resultString = null;
}
if(resultString!=null)
return resultString;
}
it gives me such exception
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ SoapFault - faultcode: 'soap:Client' faultstring: 'Ошибка разбора SOAP сообщения: неизвестный параметр. ' faultactor: 'null' detail: org.kxml2.kdom.Node@41bf3470
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137)
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140)
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.transport.Transport.parseResponse(Transport.java:129)
What i need is to change structure of xml file
but PropertyInfo allows me to add only one namespace
The problem solved
Seems like i used wrong properties
ksoap2 generates xml like this
<?xml
version="1.0"
encoding="UTF-8"
?>
<env:Envelope>
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<env:Body>
<tns:GetListClient>
xmlns:tns="http://www.spr.org"
hello
</tns:GetListClient>
</env:Body>
</env:Envelope>
But web-service 1c, excepts only such xml-structured files
<soap:Envelope>
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
<soap:Header/>
<soap:Body>
<m:GetListClient>
xmlns:m="http://www.spr.org"
<m:Param/>
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</m:GetListClient>
</soap:Body>
</soap:Envelope>
as you see the difference is in this params
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Android code
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("Celsius", "23");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setOutputSoapObject(request);
Log.e("request", request.toString());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope,headerProperty);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
resultString = response.toString();
Log.e("requestDumpCelsius",androidHttpTransport.requestDump);
Log.e("responseDumpCelsius",androidHttpTransport.responseDump);
} catch (Exception e) {
e.printStackTrace();
resultString = null;
}
if(resultString!=null)
return resultString;
}
it gives me such exception
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ SoapFault - faultcode: 'soap:Client' faultstring: 'Ошибка разбора SOAP сообщения: неизвестный параметр. ' faultactor: 'null' detail: org.kxml2.kdom.Node@41bf3470
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137)
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140)
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.transport.Transport.parseResponse(Transport.java:129)
What i need is to change structure of xml file
but PropertyInfo allows me to add only one namespace
The problem solved
Seems like i used wrong properties
Запрос перечня услуг, доступных для партнёра
Для запроса перечня услуг необходимо вызвать процедуру ServisesWithoutSupplier.
Входные переменные
Имя переменной — partnerID
Тип — string
Комментарий — Уникальный идентификатор партнёра
Выходные переменные
Имя переменной — serviceList
Тип — массив ServiceInfo (SerID — тип int, SerName — тип string)
Комментарий — Перечень доступных услуг
Имя переменной — error
Тип — Error
Комментарий — Ошибка обработки запроса, структура данных
Пример запроса
<?xml version=»1.0″ encoding=»utf-8″?> <soap:Envelope xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:xsd=»http://www.w3.org/2001/XMLSchema» xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>
<soap:Body>
<ServisesWithoutSupplier xmlns=»PayService.Service»>
<partnerID> QWER-ASDF-ZXCV </partnerID>
</ServisesWithoutSupplier>
</soap:Body>
</soap:Envelope>
Пример ответа
<?xml version=»1.0″ encoding=»utf-8″?> <soap:Envelope xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:xsd=»http://www.w3.org/2001/XMLSchema» xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>
<soap:Body>
<ServisesWithoutSupplierResponse xmlns=»PayService.Service»>
<serviceList>
<ServiceInfo>
<SerID>500065</SerID>
<SerName>ЖКУ</SerName>
</ServiceInfo>
<ServiceInfo>
<SerID> 500284 </SerID>
<SerName>ВЗНОС НА КАП.РЕМОНТ</SerName>
</ServiceInfo>
</serviceList>
</ServisesWithoutSupplierResponse>
</soap:Body>
</soap:Envelope>
/////////////////////////////////////////////////////////////////
WSОпределение = Новый WSОпределения(НашВебСервис);
WSСервис=WSОпределение.Сервисы[0];
Прокси = Новый WSПрокси(WSОпределение, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя)
ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить((WSСервис.URIПространстваИмен)).Получить(«ServisesWithoutSupplier»);
//Создаем параметр на основе типа и заполняем значение параметра partnerID.
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.partnerID = НашКодПартнера;
serviceList = «»;
Error = «»;
//Вызываем метод веб-сервиса, получения перечня услуг .
Прокси.ServisesWithoutSupplier(WSПараметр,serviceList,Error);
Выходит ошибка — При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка разбора XML: — [1,1]
Фатальная ошибка:
Extra content at the end of the document
Подскажите как правильно написать
|
|||
PsyTech
25.08.17 — 15:03 |
Всем привет! Как вернуть больше 1 параметра сервисом 1с? |
||
lodger
1 — 25.08.17 — 15:04 |
напихать их в xml. |
||
PsyTech
2 — 25.08.17 — 15:06 |
(1) И вернуть 1 парметр — текст XML. |
||
lodger
3 — 25.08.17 — 15:09 |
(2) напихать их в xml. |
||
PsyTech
4 — 25.08.17 — 15:12 |
(3) аа, вот теперь понятно) |
||
Fragster
5 — 25.08.17 — 15:41 |
поставь галку у параметра |
||
PsyTech
6 — 28.08.17 — 08:04 |
Ну так вот… |
||
PsyTech
7 — 28.08.17 — 08:06 |
(5) Какую? «Возможно пустое значение» ? |
||
PsyTech
8 — 28.08.17 — 08:50 |
Ошибка разбора SOAP сообщения: неизвестный параметр |
||
W-W-w
9 — 28.08.17 — 09:00 |
если не через параметры
Тип возвращаемого значения
//Отдаем //Получаем |
||
PsyTech
10 — 28.08.17 — 09:24 |
(9) К сожалению нужно именно через параметры. Чтоб в wsdl они были со своими типами. |
||
PsyTech
11 — 28.08.17 — 09:30 |
«Обязательное возвращаемое значение не задано» |
||
PsyTech
12 — 28.08.17 — 09:37 |
Неужели никто не возвращал больше 1 параметра? |
||
Я_в_каске
13 — 28.08.17 — 09:39 |
тебе написали, верни структуру. потом после получения структуры разбери ее и выясни что в структуру засунули. |
||
PsyTech
14 — 28.08.17 — 10:20 |
(13) Получать будет другая система, и им нужно именно так. |
||
PsyTech
15 — 28.08.17 — 10:33 |
О! и без xml все работает |
||
Fragster 16 — 28.08.17 — 11:25 |
(7) https://i.imgur.com/i039Qtv.png |
ksoap2 generates xml like this
<?xml
version="1.0"
encoding="UTF-8"
?>
<env:Envelope>
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<env:Body>
<tns:GetListClient>
xmlns:tns="http://www.spr.org"
hello
</tns:GetListClient>
</env:Body>
</env:Envelope>
But web-service 1c, excepts only such xml-structured files
<soap:Envelope>
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
<soap:Header/>
<soap:Body>
<m:GetListClient>
xmlns:m="http://www.spr.org"
<m:Param/>
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</m:GetListClient>
</soap:Body>
</soap:Envelope>
as you see the difference is in this params
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Android code
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("Celsius", "23");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setOutputSoapObject(request);
Log.e("request", request.toString());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION, envelope,headerProperty);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
resultString = response.toString();
Log.e("requestDumpCelsius",androidHttpTransport.requestDump);
Log.e("responseDumpCelsius",androidHttpTransport.responseDump);
} catch (Exception e) {
e.printStackTrace();
resultString = null;
}
if(resultString!=null)
return resultString;
}
it gives me such exception
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ SoapFault - faultcode: 'soap:Client' faultstring: 'Ошибка разбора SOAP сообщения: неизвестный параметр. ' faultactor: 'null' detail: org.kxml2.kdom.Node@41bf3470
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137)
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140)
03-04 12:17:53.723 3932-3945/eu.msdlab.postmobile W/System.err﹕ at org.ksoap2.transport.Transport.parseResponse(Transport.java:129)
What i need is to change structure of xml file
but PropertyInfo allows me to add only one namespace
The problem solved
Seems like i used wrong properties
Здравствуйте
Столкнулся с такой проблемой.
Мне нужно добавлять клиента в базу 1с при помощи SOAP.
Но при обращении к функции я получаю ошибку
Uncaught SoapFault exception: [soap:Client] Неизвестная ошибка. Недостаточно параметров операции по причине: Недостаточно параметров операции in /1c/test.php:18 Stack trace: #0 /test.php(18): SoapClient->__soapCall('CreateClient', Array) #1 {main} thrown in /home/lenzcars/chaly.xyz/aura/1c/test.php on line 18
Код
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient('http://myhost/A2-TEST/ws/ChatBot?wsdl', array(
'login' => "mylogin", 'password' => "mypassword"
));
//array(2) {
// [0]=> string(59) "CreateClientResponse CreateClient(CreateClient $parameters)"
// [1]=> string(59) "CreateClientResponse CreateClient(CreateClient $parameters)" }
var_dump($client->__getFunctions());
$params = array('name' => 'testname', 'surname' => 'testsurname', 'phone' => '0660000000', 'ID_bot' => '123456', 'clubID' => '123456');
$xml = $client->__soapCall('CreateClient', $params);
var_dump($xml);
?>
<xs:element name="CreateClient">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" nillable="true"/>
<xs:element name="surname" type="xs:string" nillable="true"/>
<xs:element name="phone" type="xs:string"/>
<xs:element name="ID_bot" type="xs:string"/>
<xs:element name="clubID" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Это мой первый опыт работы с SOAP)
Не могу найти решение.
Буду благодарен любой помощи
Всем привет! Как вернуть больше 1 параметра сервисом 1с?
И вернуть 1 парметр — текст XML. Вопрос — как вернуть несколько параметров?
поставь галку у параметра
Ну так вот… Есть у сервиса 2 выходных параметра: par1, par2. Функция сервиса должна вернуть текст (строка) в формате xml, где всего 2 тэга: par1, par2?
Какую? «Возможно пустое значение» ?
Ошибка разбора SOAP сообщения: неизвестный параметр
если не через параметры Тип возвращаемого значения Structure //Отдаем … …
К сожалению нужно именно через параметры. Чтоб в wsdl они были со своими типами.
«Обязательное возвращаемое значение не задано»
Неужели никто не возвращал больше 1 параметра?
тебе написали, верни структуру. потом после получения структуры разбери ее и выясни что в структуру засунули.
Получать будет другая система, и им нужно именно так. В общем передал xml и получил желаемый ответ. Всем спасибо!
О! и без xml все работает
Тэги:
Комментарии доступны только авторизированным пользователям