Я использую почтальон для проверки приведенной ниже строки. Поскольку я очень плохо знаком с xml кодировками, я столкнулся с проблемой правильного кодирования точки с запятой, как показано ниже.
Для WSDL: типы
<s:element name="TRANSACT_MES">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ServiceName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SUBSName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="SubsPWD" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="InputData" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="DataDelim" type="s1:char" />
</s:sequence>
</s:complexType>
</s:element>
- Мой код
http://server_location?<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body><TRANSACT_MES xmlns="http://MES/"><ServiceName>EQP_SET_STATUS</ServiceName><SUBSName>test</SUBSName><SubsPWD>test</SubsPWD><InputData>EMPLOYEENAME=111204761;COMMENTS=ConnectivityTesting;RESOURCE=ToolID;RESOURCESTATUSREASON=PM;RESOURCESTATUSCODE=SDT-ACTIVE</InputData><DataDelim>;</DataDelim></TRANSACT_MES></soap12:Body></soap12:Envelope>
Я получаю 500 Внутренняя ошибка сервера. Если изменить Delim от; на номер, это работает. Как мне пользоваться; правильно в коде.
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Sender</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">Server was unable to read request. ---> There is an error in XML document (12, 34). ---> Input string was not in a correct format.</soap:Text></soap:Reason><soap:Detail /></soap:Fault></soap:Body></soap:Envelope>