1

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 ビットを使用しています。

4

1 に答える 1

0

あなたの質問について:

...次のファイルがありません: soapClient.cpp、soapClientLib.cpp、soapProxy.h、および多数の *.req.xml および *.res.xml ファイル。プロジェクトをコンパイルするには、soapClient.cpp ファイルが特に必要です。

リンクhttp://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc8 (セクション 9.1 を参照) によると、soapcpp2 の呼び出しに間違ったオプション セットを使用したように見えます。-S スイッチを使用して「サーバー側コードのみを生成する」を指定していませんか? クライアント側のみ、-C を使用します。サーバー側とクライアント側の両方のファイルで、スイッチは必要ありません。また、プロキシ ファイルを生成するには、-i を使用する必要があります。

これが役に立てば幸いです、Ryyker

于 2011-04-22T14:39:37.417 に答える