Я пытаюсь сделать простой SOAP вызов веб-службы, используя Firefox «Открыть вкладку RESTED» для тестирования. Я думаю, что у меня есть правильная структура вызова, но я получаю сообщение об ошибке внутреннего сервера 500 "Серверу не удалось прочитать запрос. ---> В документе XML ошибка (8, 33). - -> Входная строка была не в правильном формате. "
Я выполняю этот вызов:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<LoginAndGetData xmlns="http://url.com">
<username>user</username>
<password>password</password>
<p>
<WarriorId>false</WarriorId>
<WarriorIds>
<int></int>
<int></int>
</WarriorIds>
<Lessons>false</Lessons>
<Programs>false</Programs>
<Year>false</Year>
<IdNumber>true</IdNumber>
<ExtraFields>true</ExtraFields>
<UpdateDate>null</UpdateDate>
<DivisionInfo>true</DivisionInfo>
<ProgramInfo>true</ProgramInfo>
<AccumulatedAcademicPoints>false</AccumulatedAcademicPoints>
<MoneyBalanceInfo>false</MoneyBalanceInfo>
<PassportImage>false</PassportImage>
<SpecializationData>true</SpecializationData>
<OtherID></OtherId>
<FullName></FullName>
<ProgramInfoDetails>false</ProgramInfoDetails>
<RegistraionRoadMaps>false</RegistraionRoadMaps>
<WarriorCreationDate>null</WarriorCreationDate>
<WarriorLearningProgramUpdateDate>null</WarriorLearningProgramUpdateDate>
<RegistraionRoadMapUpdateDate>null</RegistraionRoadMapUpdateDate>
<Phone>true</Phone>
</p>
</LoginAndGetData>
</soap:Body>
</soap:Envelope>
Документация для службы SOAP выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<LoginAndGetData xmlns="http://url.com/">
<username>string</username>
<password>string</password>
<p>
<WarrirId>int</WarriorId>
<WarriorIds>
<int>int</int>
<int>int</int>
</WarriorIds>
<Lessons>boolean</Lessons>
<Programs>boolean</Programs>
<Year>int</Year>
<IdNumber>int</IdNumber>
<ExtraFields>boolean</ExtraFields>
<UpdateDate>dateTime</UpdateDate>
<DivisionInfo>boolean</DivisionInfo>
<ProgramInfo>boolean</ProgramInfo>
<AccumulatedAcademicPoints>boolean</AccumulatedAcademicPoints>
<MoneyBalanceInfo>boolean</MoneyBalanceInfo>
<PassportImage>boolean</PassportImage>
<SpecializationData>boolean</SpecializationData>
<OtherId>string</OtherId>
<FullName>string</FullName>
<ProgramInfoDetails>boolean</ProgramInfoDetails>
<RegistraionRoadMaps>boolean</RegistraionRoadMaps>
<WarriorCreationDate>dateTime</WarriorCreationDate>
<WarriorLearningProgramUpdateDate>dateTime</WarriorLearningProgramUpdateDate>
<RegistraionRoadMapUpdateDate>dateTime</RegistraionRoadMapUpdateDate>
<Phone>string</Phone>
</p>
</LoginAndGetData>
</soap:Body>
</soap:Envelope>
Функции WSDL определены следующим образом:
<s:element name="LoginAndGetData">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="p" type="tns:RequestParameters"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="RequestParameters">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="WarriorId" nillable="true" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="WarriorIds" type="tns:ArrayOfInt"/>
<s:element minOccurs="1" maxOccurs="1" name="Lessons" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Programs" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="Year" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="IdNumber" nillable="true" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="ExtraFields" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="UpdateDate" nillable="true" type="s:dateTime"/>
<s:element minOccurs="1" maxOccurs="1" name="DivisionInfo" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="ProgramInfo" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="AccumulatedAcademicPoints" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="MoneyBalanceInfo" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="PassportImage" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="SpecializationData" nillable="true" type="s:boolean"/>
<s:element minOccurs="0" maxOccurs="1" name="OtherId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="FullName" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="ProgramInfoDetails" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="RegistraionRoadMaps" nillable="true" type="s:boolean"/>
<s:element minOccurs="1" maxOccurs="1" name="WarriorCreationDate" nillable="true" type="s:dateTime"/>
<s:element minOccurs="1" maxOccurs="1" name="WarriorLearningProgramUpdateDate" nillable="true" type="s:dateTime"/>
<s:element minOccurs="1" maxOccurs="1" name="RegistraionRoadMapUpdateDate" nillable="true" type="s:dateTime"/>
<s:element minOccurs="0" maxOccurs="1" name="Phone" type="s:string"/>
</s:sequence>
</s:complexType>
Вызов WSDL возвращает следующие функции и атрибуты:
string(X) "[ "LoginAndGetDataResponse LoginAndGetData(LoginAndGetData $parameters)"]"
string(X) "[ "struct LoginAndGetData {\n string username;\n string password;\n WarriorRequestParameters p;\n}", "struct WarriorRequestParameters {\n int WarriorId;\n ArrayOfInt WarriorIds;\n boolean Lessons;\n boolean Programs;\n int Year;\n int IdNumber;\n boolean ExtraFields;\n dateTime UpdateDate;\n boolean DivisionInfo;\n boolean ProgramInfo;\n boolean AccumulatedAcademicPoints;\n boolean MoneyBalanceInfo;\n boolean PassportImage;\n boolean SpecializationData;\n string OtherId;\n string FullName;\n boolean ProgramInfoDetails;\n boolean RegistraionRoadMaps;\n dateTime FromWarriorCreationDate;\n dateTime WarriorLearningProgramUpdateDate;\n dateTime RegistraionRoadMapUpdateDate;\n string Phone;\n}", "struct ArrayOfInt {\n int int;\n}", "struct LoginAndGetWarriorsDataResponse {\n ArrayOfWarriorDataItem LoginAndGetWarriorsDataResult;\n}"
Я понимаю, что что-то в структура элемента P в вызове SOAP неверна, но я понятия не имею, что ...