Ошибка wsdl: нет правильного разделения заголовков и документа

Я использую NUSOAP для использования мыльного интерфейса для microsoftdynamics. Я получаю эту ошибку «Ошибка wsdl: получение https://testserver2013.api.crm4.dynamics.com/XRMServices/2011/Organization.svc?wsdl=wsdl0 – HTTP ERROR: никакого правильного разделения заголовков и документа», I «Я немного смущен.

Я предполагаю, что XML-документ в порядке, есть проблема с заголовками, или, вероятно, я неправильно его читаю! Благодарю.

xml документа выглядит так:

<ms-xrm:FailoverPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2012/Contracts/Services"> <ms-xrm:FailoverAvailable>false</ms-xrm:FailoverAvailable> <ms-xrm:EndpointEnabled>true</ms-xrm:EndpointEnabled> </ms-xrm:FailoverPolicy> <ms-xrm:AuthenticationPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2011/Contracts/Services"> <ms-xrm:Authentication>LiveId</ms-xrm:Authentication> <ms-xrm:SecureTokenService> <ms-xrm:Identifier>urn:federation:MicrosoftOnline</ms-xrm:Identifier> <ms-xrm:LiveTrust> <ms-xrm:AppliesTo>urn:crmemea:dynamics.com</ms-xrm:AppliesTo> <ms-xrm:TrustVersion>WSTrustFeb2005</ms-xrm:TrustVersion> <ms-xrm:SecurityMode>TransportWithMessageCredential</ms-xrm:SecurityMode> <ms-xrm:LivePolicy>MBI_FED_SSL</ms-xrm:LivePolicy> <ms-xrm:LiveIdAppliesTo>http://Passport.NET/tb</ms-xrm:LiveIdAppliesTo> </ms-xrm:LiveTrust> </ms-xrm:SecureTokenService> </ms-xrm:AuthenticationPolicy> <ms-xrm:FailoverPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2012/Contracts/Services"> <ms-xrm:FailoverAvailable>false</ms-xrm:FailoverAvailable> <ms-xrm:EndpointEnabled>true</ms-xrm:EndpointEnabled> </ms-xrm:FailoverPolicy> <ms-xrm:AuthenticationPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2012/Contracts/Services"> <ms-xrm:Authentication>OnlineFederation</ms-xrm:Authentication> <ms-xrm:SecureTokenService> <ms-xrm:Identifier>https://dynamicscrmemea.accesscontrol.windows.net/</ms-xrm:Identifier> <ms-xrm:OrgTrust> <ms-xrm:AppliesTo>urn:crmemea:dynamics.com</ms-xrm:AppliesTo> <ms-xrm:TrustVersion>WSTrustFeb2005</ms-xrm:TrustVersion> <ms-xrm:SecurityMode>TransportWithMessageCredential</ms-xrm:SecurityMode> <ms-xrm:LivePolicy>MBI_FED_SSL</ms-xrm:LivePolicy> <ms-xrm:LiveIdAppliesTo>http://Passport.NET/tb</ms-xrm:LiveIdAppliesTo> <ms-xrm:LiveEndpoint>https://login.microsoftonline.com/RST2.srf</ms-xrm:LiveEndpoint> <ms-xrm:Identifier>urn:federation:MicrosoftOnline</ms-xrm:Identifier> </ms-xrm:OrgTrust> </ms-xrm:SecureTokenService> </ms-xrm:AuthenticationPolicy> <ms-xrm:FailoverPolicy xmlns:ms-xrm="http://schemas.microsoft.com/xrm/2012/Contracts/Services"> <ms-xrm:FailoverAvailable>false</ms-xrm:FailoverAvailable> <ms-xrm:EndpointEnabled>true</ms-xrm:EndpointEnabled> </ms-xrm:FailoverPolicy> <sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> <wsp:Policy> <sp:TransportToken> <wsp:Policy> <sp:HttpsToken/> </wsp:Policy> </sp:TransportToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:TripleDes/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Strict/> </wsp:Policy> </sp:Layout> <sp:IncludeTimestamp/> </wsp:Policy> </sp:TransportBinding> <sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> <wsp:Policy> <sp:IssuedToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> <Issuer xmlns="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> <Address xmlns="http://www.w3.org/2005/08/addressing">https://login.microsoftonline.com/RST2.srf</Address> <Metadata xmlns="http://www.w3.org/2005/08/addressing"> <Metadata xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <wsx:MetadataSection xmlns=""> <wsx:MetadataReference> <Address xmlns="http://www.w3.org/2005/08/addressing">https://dynamicscrmemea.accesscontrol.windows.net/v2/wstrust/mex</Address> </wsx:MetadataReference> </wsx:MetadataSection> </Metadata> </Metadata> </Issuer> <sp:RequestSecurityTokenTemplate> <trust:KeyType xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey</trust:KeyType> <trust:KeySize xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">192</trust:KeySize> <trust:Claims Dialect="http://schemas.xmlsoap.org/ws/2005/05/identity" xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> <wsid:ClaimType Uri="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" xmlns:wsid="http://schemas.xmlsoap.org/ws/2005/05/identity"/> </trust:Claims> <trust:KeyWrapAlgorithm xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p</trust:KeyWrapAlgorithm> <trust:EncryptWith xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">http://www.w3.org/2001/04/xmlenc#tripledes-cbc</trust:EncryptWith> <trust:SignWith xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">http://www.w3.org/2000/09/xmldsig#hmac-sha1</trust:SignWith> <trust:CanonicalizationAlgorithm xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">http://www.w3.org/2001/10/xml-exc-c14n#</trust:CanonicalizationAlgorithm> <trust:EncryptionAlgorithm xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">http://www.w3.org/2001/04/xmlenc#tripledes-cbc</trust:EncryptionAlgorithm> </sp:RequestSecurityTokenTemplate> <wsp:Policy> <sp:RequireInternalReference/> </wsp:Policy> </sp:IssuedToken> </wsp:Policy> </sp:SignedSupportingTokens> <sp:Wss11 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> <wsp:Policy/> </sp:Wss11> <sp:Trust13 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> <wsp:Policy> <sp:MustSupportIssuedTokens/> <sp:RequireClientEntropy/> <sp:RequireServerEntropy/> </wsp:Policy> </sp:Trust13> <wsaw:UsingAddressing/> </wsp:All> </wsp:ExactlyOne> 

любые идеи, спасибо! или любой хороший рабочий учебник по microsoft динамике crm онлайн 2011 было бы здорово!

благодаря!

Проверьте окончания строки. Проблема может быть вызвана смесью LF и CR + LF в ваших PHP / исходных файлах

Я только что увидел эту ошибку и, похоже, это ошибка в коде nusoap. В нашем случае это было вызвано ответом на ошибку 401 на вызов SOAP, но 301 и 302 ответы, похоже, вызовут ту же проблему.

Кажется, что ошибка находится в следующей строке кода:

if ($ pos = strpos ($ data, "\ r \ n \ r \ n"))

Когда заголовки были разделены, $ pos устанавливается в 0, и это оценивается как ЛОЖЬ, тогда как, по-видимому, разработчик рассчитывал, что он будет оценивать TRUE вместе с случаем, когда заголовки не повреждены.

См .: https://github.com/codecasts/nusoap-php7/blob/master/lib/class.soap_transport_http.php