ksoap2-androidを使用してSOAP呼び出しを行おうとしていますが、サーバーは、SOAPリクエストが次のようになることを期待しています。
<?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>
<hilo:getHLPredAndMetadata xmlns:hilo="http://opendap.co-ops.nos.noaa.gov/axis/webservices/highlowtidepred/wsdl">
<stationId xmlns="">8454000</stationId>
<beginDate xmlns="">20060920 00:00</beginDate>
<endDate xmlns="">20060922 23:59</endDate>
<datum xmlns="">0</datum>
<unit xmlns="">0</unit>
<timeZone xmlns="">0</timeZone>
</hilo:getHLPredAndMetadata>
</soapenv:Body>
</soapenv:Envelope>
しかし、プロパティを追加すると、次の出力が得られます。
<?xml version="1.0" encoding="UTF-8" ?>
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<n0:getHLPredAndMetadata id="o0" c:root="1" xmlns:n0="http://opendap.co-ops.nos.noaa.gov/axis/webservices/highlowtidepred/wsdl">
<stationId i:type="d:string">8722669</stationId>
<beginDate i:type="d:string">20101101 00:00</beginDate>
<endDate i:type="d:string">20101101 23:00</endDate>
<datum i:type="d:int">0</datum>
<unit i:type="d:int">0</unit>
<timeZone i:type="d:int">0</timeZone>
</n0:getHLPredAndMetadata>
</v:Body>
</v:Envelope>
ソースはかなりまっすぐ進んでいます。電話をかけた後、以下のエラーが発生します。
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44eff1b8)
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44eff1b8)
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): at org.kxml2.io.KXmlParser.exception(KXmlParser.java:245)
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1365)
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
11-02 03:01:01.151: ERROR/NoaaTideSoap(389): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
KSOAPの問題が原因で、このエラーが発生する天気がわかりません。呼び出しているサービスからの応答が表示されません。
私の考えでは、サービスはここで指定されているようにプレフィックス「hilo」を期待しています。
そして、私の電話は次のようになります。
さらに、彼らが期待するプロパティでは:
8454000
繰り返しますが、属性は異なります
8722669
KSOAPを使用してこれらの値を設定する方法を知っている人はいますか?
以下はコードスニップです:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("stationId","8722669");
request.addProperty("beginDate","20101101 00:00");
request.addProperty("endDate","20101101 23:00");
request.addProperty("datum",0);
request.addProperty("unit",0);
request.addProperty("timeZone",0);
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(request);
AndroidHttpTransport aht = new AndroidHttpTransport(URL);
aht.setXmlVersionTag("<?xml version=\"1.0\" encoding= \"UTF-8\" ?>");
aht.debug = true;
前もって感謝します