- - PR -
[Apache SOAP]パラメーターとしてDOM要素をメソッドに渡す方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-30 16:33
Apache SOAPにて
パラメタとして以下をメソッドに渡したいのですが <request/> 以下のコードで試したところ IllegalArgumentException 例外となってしまいます。 (org.w3c.dom.Element でないとダメです的な)
以下もダメでした。
どのように書けば <request/> だけをパラメタとしてメソッドに渡せるのでしょうか? ご存知のかた、ご教授お願いします。 環境 Apache SOAP 2.3.1 J2SE 1.4.2_03 | ||||||||
|
投稿日時: 2004-09-30 19:16
以下のコードでどうでしょうか。
Call call = new Call(); call.setEncodingStyleURI(Constants.NS_URI_LITERAL_XML); call.setTargetObjectURI(urn_url); // 接続先のクラス指定 call.setMethodName(methodName); // メソッド名指定 Vector params = new Vector(); Document doc = new DocumentImpl(); Element root = doc.createElement("request"); // <request/>のみ渡す場合 Node node = doc.appendChild(root); params.addElement(new Parameter("request", Element.class, root, Constants.NS_URI_LITERAL_XML)); call.setParams(params); Response resp = call.invoke(new URL(url), ""); 以上 動作環境 OS Solaris8 App Weblogic6.1 SP5 Java 1.3.1 Apache Soap 2.3.1 OS Solaris8 App SunOneAppServer7 Java 1.4.2 Apache Soap 2.3.1 以上の環境で動作しています。 | ||||||||
|
投稿日時: 2004-09-30 19:38
ponkotuさん、ありがとうございます。
早速試してみたのですが パラメタは以下の様になってしまいます。
<request/> だけをパラメタとしてリモートメソッドに渡す方法はないのでしょうか? #無いわけないと思うのですが、全くわからない。。。
| ||||||||
|
投稿日時: 2004-09-30 20:10
パラメタの作り方がわからないという件については自己解決?しました。
最初の投稿の、コード(2つあるうちの上の方)で <request> </request> のパラメタが作れていました。 IllegalArgumentException 例外というのも嘘でした。 正しいパラメタを送っているにもかかわらず、SOAPサーバ側が不正なパラメタです と怒っているようです。(仕様書通りに呼び出してるはずなのだが。。。) <request/> と <request> </request> は同じと考えてよいのでしょうか? | ||||||||
|
投稿日時: 2004-09-30 23:06
<request/>と<request></request>
は空要素の扱いとなるので、同じ意味となります。 ただし、XML解析するコードの実装により、 意味を別とするパターンもありえるかもしれません。(基本的にはないと思います) 空要素については、以下に詳しく書いています。 http://www.atmarkit.co.jp/aig/01xml/emptytag.html 以上 | ||||||||
|
投稿日時: 2004-10-01 11:28
ponkotuさん、ありがとうございます。
ですよね。SOAPサービス提供側が悪いということで問い合わせてみたいと思います。 ありがとうございました。 |
1