@Kerm

PHP SOAP интеграция с API Pony Express?

Бьюсь с проблемой не могу понять что не так, прошу помощи:

Есть вот документация: http://api-wiki.ponyexpress.ru/index.php/Заглавная...

Есть WDSL: https://svc-api.p2e.ru/UI_Service.svc?singleWsdl

Отправляю вот эти данные:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://tempuri.org/">
	<SOAP-ENV:Body>
		<ns1:SubmitRequest>
			<accesskey>.........</accesskey>
			<requestBody>
				<Request xsi:type="OrderRequest">
					<Id>10174</Id>
					<Mode>Status</Mode>
					<OrderList>
						<Order>
							<ServiceList>
								<Service xsi:type="DeliveryService">
									<Waybill>
										<Number>22-6762-0542</Number>
									</Waybill>
								</Service>
							</ServiceList>
						</Order>
					</OrderList>
				</Request>
			</requestBody>
		</ns1:SubmitRequest>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Выдает ошибку что то типа A system error has been occurred. Please contact service desk.

Отправляю данные вот так:

$client->__soapCall('SubmitRequest', array($parameter));
  • Вопрос задан
  • 766 просмотров
Пригласить эксперта
Ответы на вопрос 2
@PapaStifflera
Родился, вырос...
Решение описано в тексте ошибки:
Please contact service desk.
Ответ написан
Комментировать
@Kerm Автор вопроса
Ой все такие умные, тех. поддержки на сайте Pony нет вообще, даже такого раздела и чего либо намекающего на суппорт, на сайте даже онлайн чате отвечают раз в день у них. Please contact service desk. это скорее всего стандартный текст какой ни будь софтиты. Нет и не было у них service desk этого.

Я посылаю вот эти данные:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <ns1:SubmitRequest>
         <!--Optional:-->
         <ns1:accesskey>59ef638c-****-****-****-5da5a6080f8e</ns1:accesskey>
         <!--Optional:-->
         <ns1:requestBody>
         	<ns1:Request xsi:type="OrderRequest">
         		<ns1:Id>10174</Id>
         		<ns1:Mode>Status</Mode>
				<ns1:OrderList>
					<ns1:Order>
						<ns1:ServiceList>
							<ns1:Service xsi:type="DeliveryService">
								<ns1:Waybill>
									<ns1:Number>22-6762-0542</Number>
								</ns1:Waybill>
							</ns1:Service>
						</ns1:ServiceList>
					</ns1:Order>
				</ns1:OrderList>
         	</ns1:Request>
         </ns1:requestBody>
      </ns1:SubmitRequest>
   </soapenv:Body>
</soapenv:Envelope>


Получаю вот такой ответ:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <s:Fault>
         <faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:DeserializationFailed</faultcode>
         <faultstring xml:lang="ru-RU">The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:requestBody. The InnerException message was 'There was an error deserializing the object of type System.String. End element 'requestBody' from namespace 'http://tempuri.org/' expected. Found element 'ns1:Request' from namespace 'http://tempuri.org/'. Line 9, position 48.'.  Please see InnerException for more details.</faultstring>
         <detail>
            <ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
               <HelpLink i:nil="true"/>
               <InnerException>
                  <HelpLink i:nil="true"/>
                  <InnerException>
                     <HelpLink i:nil="true"/>
                     <InnerException i:nil="true"/>
                     <Message>End element 'requestBody' from namespace 'http://tempuri.org/' expected. Found element 'ns1:Request' from namespace 'http://tempuri.org/'. Line 9, position 48.</Message>
                     <StackTrace>at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
   at System.Xml.XmlExceptionHelper.ThrowEndElementExpected(XmlDictionaryReader reader, String localName, String ns)
   at System.Xml.XmlBaseReader.ReadEndElement()
   at System.Xml.XmlBaseReader.ReadElementContentAsString()
   at System.Runtime.Serialization.XmlReaderDelegator.ReadElementContentAsString()
   at System.Runtime.Serialization.StringDataContract.ReadXmlValue(XmlReaderDelegator reader, XmlObjectSerializerReadContext context)
   at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)</StackTrace>
                     <Type>System.Xml.XmlException</Type>
                  </InnerException>
                  <Message>There was an error deserializing the object of type System.String. End element 'requestBody' from namespace 'http://tempuri.org/' expected. Found element 'ns1:Request' from namespace 'http://tempuri.org/'. Line 9, position 48.</Message>
                  <StackTrace>at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
   at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)</StackTrace>
                  <Type>System.Runtime.Serialization.SerializationException</Type>
               </InnerException>
               <Message>The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:requestBody. The InnerException message was 'There was an error deserializing the object of type System.String. End element 'requestBody' from namespace 'http://tempuri.org/' expected. Found element 'ns1:Request' from namespace 'http://tempuri.org/'. Line 9, position 48.'.  Please see InnerException for more details.</Message>
               <StackTrace><![CDATA[at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameter(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
   at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)]]></StackTrace>
               <Type>System.ServiceModel.Dispatcher.NetDispatcherFaultException</Type>
            </ExceptionDetail>
         </detail>
      </s:Fault>
   </s:Body>
</s:Envelope>


Не пойму что означает ошибка:

End element 'requestBody' from namespace 'tempuri.org' expected. Found element 'ns1:Request' from namespace 'tempuri.org'. Line 9, position 48
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽