Re: PHP 5.3 SoapClient Stripping HTML special characters

James Crow <[email protected]>
Newsgroups gmane.comp.php.windows
Message-ID <[email protected]>
On Fri, 19 Aug 2011 17:30:27 +0100, Richard Quadling <[email protected]>
wrote:
> On 19 August 2011 17:13, James Crow <[email protected]> wrote:
>> On Fri, 19 Aug 2011 16:33:43 +0100, Richard Quadling
>> <[email protected]>
>> wrote:
>>> On 19 August 2011 16:16, James Crow <[email protected]> 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 &#13;
>>
>> 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


-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.