Я немного анонимизировал это. Надеюсь, это не умаляет полезного сообщения. Я думаю, что в stringARRAY меня бросают, но я не уверен, поэтому, если я смотрю не в том месте, позвольте мне знать.
Из WSDL
<xsd:element name="LongishOpName">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="stringARRAY" type="xsd:string" />
<xsd:element name="stringfield1" type="xsd:string" />
<xsd:element name="stringfield2" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Фактический вызов метода выглядит следующим образом:
string originalValue = "some useful value";
string[] usefulName1 = new[] { originalValue };
service.response[] responses = server.LongishOpName( usefulName1, someString1, someString2 );
И он генерирует этот XML на сервер (благодаря Fiddler2):
<?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>
<LongishOpName xmlns="http://appropriate-namespace">
<stringARRAY>114003</stringARRAY>
<stringfield1>a string</stringfield1>
<stringfield2>a string</stringfield2>
</LongishOpName>
</soap:Body>
</soap:Envelope>
На что я получаю этот ответ
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>org.xml.sax.SAXException: Found character data inside an array element while deserializing</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">SERVERNAME</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Мое мыльное сообщение действительно искажено? (да, я использую веб-ссылки ASP.NET для выполнения всех операций по подъему, я не создаю вручную)
Должен ли я делать что-то другое?
Мне просто нужно пойти домой и поспать на нем, а завтра все будет "просто работать"?