|
ошибки при парсинге ответа веб-сервиса в 1С (fiddler говорит, что ответ корректный) | ☑ | ||
---|---|---|---|---|
0
novichok79
02.09.20
✎
09:34
|
Доброго времени суток, коллеги.
Есть тестовый веб-сервис одной из гос. контор. http://ruzditest.eisnot.ru:8280/services/ruzdiUploadNotificationPackageService_v1_0?wsdl В общем-то ничего особенного (на 8.3.14 и 8.3.17) формирую туда запрос по XDTO схеме, полученной из WSПрокси. Отправляю этот запрос: WSПрокси.uploadNotificationPackage(ДанныеДляОтправки.ОбъектЗапроса, registrationId, packageStateCode) Смотрю результат запроса через Fiddler: от сервиса приходит ответ в 1С, но 1С его как-то неправильно читает - ругается на несоответствие типов одного из полей, хотя данные в отправленном поле проходят проверку через ФасетXDTO, указанный в типе поля. Ругань следующая: Ошибка при вызове метода контекста (uploadNotificationPackage): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://fciit.ru/eis2/ruzdi/uploadNotificationPackageService/v1_0}:ruzdiUploadNotificationPackageService_v1_0:uploadNotificationPackage(): При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка проверки данных XDTO: Значение: '' не соответствует простому типу: {http://fciit.ru/eis2/ruzdi/uploadNotificationPackageService/v1_0}guidType Значение не соответствует образцу Поле в запросе заполнено как надо, о чем свидетельсвует тело запроса, посылаемого из 1С: <m:packageId>bf7ae31a-557e-4728-b4d8-25bf36f9f8e4</m:packageId> В чем может быть ошибка? |
|||
1
acht
02.09.20
✎
09:46
|
Судя по сообщению об ошибке у тебя там пустая строка
|
|||
2
novichok79
02.09.20
✎
10:15
|
(1) ха! если бы
тело запроса POST http://ruzditest.eisnot.ru:8280/services/ruzdiUploadNotificationPackageService_v1_0.ruzdiUploadNotificationPackageService_v1_0HttpSoap11Endpoint HTTP/1.1 Host: ruzditest.eisnot.ru:8280 Proxy-Authorization: NTLM TlRMTVNTUAABAAAAB7IIogkACQA1AAAADQANACgAAAAKAGFKAAAAD1NLSUxMRVJTRVJWRVJXT1JLR1JPVVA= User-Agent: 1C+Enterprise/8.3 Accept: */* Connection: Keep-Alive Content-Type: text/xml;charset=utf-8 SOAPAction: "http://fciit.ru/eis2/ruzdi/uploadNotificationPackageService" Content-Length: 3339 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <m:uploadNotificationPackageRequest xmlns:m="http://fciit.ru/eis2/ruzdi/uploadNotificationPackageService/v1_0"> <m:pledgeNotificationPackage xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <m:packageId>816980f7-3787-4c89-acda-95a3c8794367</m:packageId> <m:uip>5000000004535190000000692</m:uip> <m:senderType>1</m:senderType> <m:pledgeNotificationList> тело ответа: HTTP/1.1 200 OK Vary: Accept-Encoding Content-Type: text/xml; charset=utf-8 X-Powered-By: PHP/7.2.23 Date: Wed, 02 Sep 2020 07:12:51 GMT Transfer-Encoding: chunked Connection: Keep-Alive 30d <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://fciit.ru/eis2/ruzdi/uploadNotificationPackageService/v1_0"><SOAP-ENV:Body> <v1:uploadNotificationPackageResponse xmlns:v1="http://fciit.ru/eis2/ruzdi/uploadNotificationPackageService/v1_0"> <v1:registrationId></v1:registrationId> <v1:packageStateCode> <v1:code>13</v1:code> <v1:message>Ошибка разбора/сохранения документа пакета. Следующие уведомления уже существуют: 0f2cc4a5ec5811eab81800155d015a07</v1:message> </v1:packageStateCode> </v1:uploadNotificationPackageResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> |
|||
3
novichok79
02.09.20
✎
10:15
|
у меня оно заполненное, а вот в ответе - пустое.
|
|||
4
acht
02.09.20
✎
10:23
|
(3) Ну вот иди к этим, которые X-Powered-By: PHP/7.2.23, и выясняй, почем они отдают пустое значение. Хотя должны вообще не отдавать этот тег:
<xsd:complexType name="uploadNotificationPackageResponseType"> <xsd:annotation> <xsd:documentation> Статус по приему пакета уведомлений. registrationId - регистрационный идентификатор пакета в системе в случае успешного приема packageStateCode - статус обработки </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element minOccurs="0" name="registrationId" type="tns:guidType"/> <xsd:element name="packageStateCode" type="tns:StateType"/> </xsd:sequence> </xsd:complexType> Или корячь схему на своей стороне, пытаясь обойти их бзики. |
|||
5
acht
02.09.20
✎
10:25
|
||||
6
novichok79
02.09.20
✎
10:26
|
(5) спасибо. это я понял, в фиддлере видно, что 1С схему получает с этого URL.
|
|||
7
novichok79
02.09.20
✎
10:26
|
(4) напишу еще 1 запрос в их ТП
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |