@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));
  • Вопрос задан
  • 784 просмотра
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы