Re: PHP 5.3 SoapClient Stripping HTML special characters

From: Date: Fri, 19 Aug 2011 20:18:01 +0000
Subject: Re: PHP 5.3 SoapClient Stripping HTML special characters
References: 1 2 3 4 5 6  Groups: php.windows 
Request: Send a blank email to php-windows+get-30691@lists.php.net to get a copy of this message
On Fri, 19 Aug 2011 21:12:21 +0100, Richard Quadling <rquadling@gmail.com> wrote: > On 19 August 2011 19:28, James Crow <james@ultratans.com> wrote: >> On Fri, 19 Aug 2011 17:30:27 +0100, Richard Quadling >> <rquadling@gmail.com> >> wrote: >>> On 19 August 2011 17:13, James Crow <james@ultratans.com> wrote: >>>> On Fri, 19 Aug 2011 16:33:43 +0100, Richard Quadling >>>> <rquadling@gmail.com> >>>> wrote: >>>>> On 19 August 2011 16:16, James Crow <james@ultratans.com> wrote: >>>>>> Hi all, >>>>>> >>>>>> I am using the SOAP client to retrieve data from a web server. One >>>> field >>>>>> in the returned object is a text string that may contain embedded >>>>>> carriage >>>>>> returns. If I look at the raw packets they appear as ' >>>> ' in the >>>>>> string. >>>>>> When I get the string in the SoapClient the carriage return has been >>>>>> stripped. So far I have been unable to find a setting that will leave >>>>>> this >>>>>> embedded character in place. >>>>>> >>>>>> Can someone point me in the right direction? >>>>>> >>>>>> Thanks, >>>>>> James >>>>> >>>>> Can you supply a WSDL URL for the service? I can quickly verify what >>>>> you are seeing. >>>>> >>>>> Can you tell us how you perceive the missing character? If you are >>>>> echoing it to a browser, then there will be no visual line break as >>>>> that is not a HTML character. >>>>> >>>>> But if you wrap the output in <pre>...</pre> tags, you should see >>>>> it >>>> just >>>>> fine. >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Richard Quadling >>>>> Twitter : EE : Zend : PHPDoc >>>>> @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea >>>> >>>> Richard, >>>> >>>> Thanks for the response. My initial email appears garbled somewhat. >>>> Between the single quotes should have been >>>> >>>> The WDSL is: >>>> http://clients.mindbodyonline.com/api/0_5/AppointmentService.asmx?WSDL >>>> >>>> I am using functions which return (among other things) an Appointment >>>> object. This Appointment object has a property named Notes. The Notes >>>> item >>>> in their software is displayed and edited in a html textarea field. If >> a >>>> newline is entered in the textarea field I need it to be present in the >>>> string in the SoapClient. >>>> >>>> To actually connect to with a SOAP client requires a username and >>>> password. >>>> >>>> Thanks, >>>> James >>>> >>>> >>> >>> What you need to determine is the EXACT content. >>> >>> Can you dump the $o_Service->__getLastResponse() to a file, and zip it? >>> >>> I have a framework that I use to test SOAP services. It isn't 100% >>> automatic, but it doesn't take too long. >>> >>> I've got it working as far as I can without the credentials. >>> >>> Hopefully you can add them in and the rest of the code should work. >>> >>> I assume it is just a SoapHeader you need to add. >>> >>> Running the consume.php script currently outputs ... >>> >>> Request Headers >>> --------------- >>> POST /api/0_5/AppointmentService.asmx HTTP/1.1 >>> Host: clients.mindbodyonline.com >>> Connection: Keep-Alive >>> User-Agent: PHP >>> Content-Type: text/xml; charset=utf-8 >>> SOAPAction: "http://clients.mindbodyonline.com/api/0_5/GetScheduleItems" >>> Content-Length: 742 >>> >>> >>> Request (XML) >>> ------------- >>> <?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://clients.mindbodyonline.com/api/0_5"> >>>   <SOAP-ENV:Body> >>>     <ns1:GetScheduleItems> >>>       <ns1:Request> >>>         <ns1:XMLDetail xsi:nil="true" /> >>>         <ns1:PageSize xsi:nil="true" /> >>>         <ns1:CurrentPageIndex xsi:nil="true" /> >>>         <ns1:LocationIDs> >>>           <ns1:int>1</ns1:int> >>>           <ns1:int>2</ns1:int> >>>           <ns1:int>3</ns1:int> >>>         </ns1:LocationIDs> >>>         <ns1:StaffIDs> >>>           <ns1:long>100</ns1:long> >>>           <ns1:long>200</ns1:long> >>>           <ns1:long>300</ns1:long> >>>         </ns1:StaffIDs> >>>         <ns1:StartDate>2011-01-01T00:00:00Z</ns1:StartDate> >>>         <ns1:EndDate>2011-12-31T23:59:59Z</ns1:EndDate> >>>       </ns1:Request> >>>     </ns1:GetScheduleItems> >>>   </SOAP-ENV:Body> >>> </SOAP-ENV:Envelope> >>> >>> Response Headers >>> ---------------- >>> HTTP/1.1 200 OK >>> Cache-Control: private, max-age=0 >>> Content-Type: text/xml; charset=utf-8 >>> Server: Microsoft-IIS/7.5 >>> X-AspNet-Version: 2.0.50727 >>> X-Powered-By: ASP.NET >>> P3P: CAO DSP COR CUR TAIa OUR NOR UNI STA >>> Date: Fri, 19 Aug 2011 16:28:44 GMT >>> Content-Length: 614 >>> >>> Response (XML) >>> -------------- >>> <?xml version="1.0" encoding="utf-8"?> >>> <soap:Envelope >>> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" >>>               >>>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>               >>>  xmlns:xsd="http://www.w3.org/2001/XMLSchema"> >>>   <soap:Body> >>>     <GetScheduleItemsResponse >>>     >>> xmlns="http://clients.mindbodyonline.com/api/0_5"> >>>       <GetScheduleItemsResult> >>>         <Status>InvalidCredentials</Status> >>>         <Message>SourceCredentials must be provided.</Message> >>>         <XMLDetail>Full</XMLDetail> >>>         <ResultCount>0</ResultCount> >>>         <CurrentPageIndex>0</CurrentPageIndex> >>>         <TotalPageCount>0</TotalPageCount> >>>       </GetScheduleItemsResult> >>>     </GetScheduleItemsResponse> >>>   </soap:Body> >>> </soap:Envelope> >>> >>> >>> Response (Interpreted) >>> ---------------------- >>> GetScheduleItemsResult Object >>> ( >>>     [StaffMembers] => >>>     [Status] => InvalidCredentials >>>     [Message] => SourceCredentials must be provided. >>>     [XMLDetail] => Full >>>     [ResultCount] => 0 >>>     [CurrentPageIndex] => 0 >>>     [TotalPageCount] => 0 >>> ) >> >> I entered my login credentials in the consume.php script and changed it >> to >> dump __getLastResponse() to a text file. I do not want to include the >> entire file because it contains customer information, but I did look >> through the file with vi. The Notes /Notes XMl items do not contain >> embedded carriage returns or line feeds. I think this is a bug in the >> SOAP >> service and not in the PHP SoapClient. >> >> Thanks, >> James >> >> > > So, at this stage, proving the lack of the returns is all I can do. > > Are you responsible for the service? Unfortunately I am not responsible for the service. I can only bring it their attention and try to get them to fix it. Using your code, it is easy to display exactly what the problem is. Thank you, James

« previous php.windows (#30691) next »