Note that there are some explanatory texts on larger screens.

plurals
  1. POPHP SoapClient call response missing parts of answer
    text
    copied!<p>I am having trouble with PHP parsing of a SoapClient call's response. For some types of answers, it is returning arrays of empty stdClass objects instead of initialized stdClass objects.</p> <p>The server is a java webservice deployed with axis2 on tomcat6. The Java signature of the problematic service call is <code>public Course getCourseDetails(Long courseId)</code> Course is a standard POJO defined as:</p> <pre><code>public class Course { private Long id; private List&lt;Hole&gt; holes; private String name; private String tees; //etc... } </code></pre> <p>Hole is a standard POJO with only primative members.</p> <p>When called with PHP, the holes member is an array with the correct length, but each hole is empty.</p> <pre><code>$args = array(); $args["courseId"] = $courseId; $response = $client-&gt;getCourseDetails($args); $course = $response-&gt;return; //course has all of its primitive members set correctly: good $holes = $course-&gt;holes; //holes is an array with count = 18: good $hole = $holes[0]; //hole is an empty stdClass: bad </code></pre> <p>Printing out the returned XML with <code>$soapClient-&gt;__getLastResponse()</code> what looks like the correct representation:</p> <pre><code>&lt;?xml version='1.0' encoding='utf-8'?&gt; &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt; &lt;soapenv:Body&gt; &lt;ns:getCourseDetailsResponse xmlns:ns="http://webservice.golfstats"&gt; &lt;ns:return xmlns:ax21="http://datastructures.server.golfstats/xsd" xmlns:ax22="http://util.java/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax24="http://uuid.eaio.com/xsd" xsi:type="ax21:Course"&gt; &lt;ax21:courseLocation&gt;Faketown, VA&lt;/ax21:courseLocation&gt; &lt;ax21:courseName&gt;Fake Links&lt;/ax21:courseName&gt; &lt;ax21:dateAdded&gt;2003-01-02&lt;/ax21:dateAdded&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;1&lt;/ax21:id&gt;&lt;ax21:number&gt;1&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;2&lt;/ax21:id&gt;&lt;ax21:number&gt;2&lt;/ax21:number&gt;&lt;ax21:par&gt;3&lt;/ax21:par&gt;&lt;ax21:yardage&gt;150&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;3&lt;/ax21:id&gt;&lt;ax21:number&gt;3&lt;/ax21:number&gt;&lt;ax21:par&gt;5&lt;/ax21:par&gt;&lt;ax21:yardage&gt;502&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;4&lt;/ax21:id&gt;&lt;ax21:number&gt;4&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;5&lt;/ax21:id&gt;&lt;ax21:number&gt;5&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;6&lt;/ax21:id&gt;&lt;ax21:number&gt;6&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;7&lt;/ax21:id&gt;&lt;ax21:number&gt;7&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;8&lt;/ax21:id&gt;&lt;ax21:number&gt;8&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;9&lt;/ax21:id&gt;&lt;ax21:number&gt;9&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;10&lt;/ax21:id&gt;&lt;ax21:number&gt;10&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;11&lt;/ax21:id&gt;&lt;ax21:number&gt;11&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;12&lt;/ax21:id&gt;&lt;ax21:number&gt;12&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;13&lt;/ax21:id&gt;&lt;ax21:number&gt;13&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;14&lt;/ax21:id&gt;&lt;ax21:number&gt;14&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;15&lt;/ax21:id&gt;&lt;ax21:number&gt;15&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;16&lt;/ax21:id&gt;&lt;ax21:number&gt;16&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;17&lt;/ax21:id&gt;&lt;ax21:number&gt;17&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:holes&gt;&lt;ax21:id&gt;18&lt;/ax21:id&gt;&lt;ax21:number&gt;18&lt;/ax21:number&gt;&lt;ax21:par&gt;4&lt;/ax21:par&gt;&lt;ax21:yardage&gt;345&lt;/ax21:yardage&gt;&lt;/ax21:holes&gt; &lt;ax21:id&gt;1&lt;/ax21:id&gt; &lt;ax21:rating&gt;68.5&lt;/ax21:rating&gt; &lt;ax21:slope&gt;113&lt;/ax21:slope&gt; &lt;ax21:tees&gt;Blue&lt;/ax21:tees&gt; &lt;/ns:return&gt; &lt;/ns:getCourseDetailsResponse&gt; &lt;/soapenv:Body&gt; &lt;/soapenv:Envelope&gt; </code></pre> <p>Why is each hole an empty stdClass? Are there known limitations to the number of levels SoapClient will parse a response?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload