SOAP を使用して組み込みデバイスである SmartServer と通信する必要があるアプリケーションがあります。受け入れる SOAP メッセージには名前空間がありませんが、gSAOP はそれらを名前空間とともに送信します。したがって、それらは次のようになります。
<ns3:List>
<ns3:iLonItem>
<ns3:xSelect></ns3:xSelect>
</ns3:iLonItem>
</ns3:List>
これの代わりに:
<List>
<iLonItem>
<xSelect></xSelect>
</iLonItem>
</List>
最初に WSDL および XSD ファイルの修飾を非修飾に変更してから、ファイルを再生成し、非修飾を修飾に変更してみました。しかし、私が得た最高のものは
<ns3:List>
<iLonItem>
<xSelect></xSelect>
</iLonItem>
</ns3:List>
どちらの方が見栄えが良いですが、それでもリストには名前空間があります。
するとSOAP_XML_DEFAULTNSオプションを使わなければいけないというサイトを見つけたのでやってみました。これは最初はうまくいきませんでしたが、2.7.9l-0.2 (Debian の標準バージョン) の代わりにバージョン 2.8.1 を使用する必要があることがわかりました。そこで、Debian バージョンをアンインストールし、2.8.1 をダウンロードしてファイルをコピーしました。しかし、soapcpp2 でファイルを生成しようとすると、soapClient.cpp、soapClientLib.cpp、soapProxy.h、および多くの *.req.xml および *.res.xml ファイルが見つかりません。プロジェクトをコンパイルするには、soapClient.cpp ファイルが特に必要です。
INSTALL.txt で説明されているように、 gsoap/bin ディレクトリから標準バイナリを試し、 gsoap ディレクトリから src および wsdl ファイルを再構築しましたが、どれも思い通りに動作しません。
誰かが私をもう少し助けてくれますか?
問題がある場合、私は Debian Linux バージョン 5.0.8 (Lenny、古い安定版) 32 ビットを使用しています。