2011-12-31 11 views
1

C#クライアントからjava Webサーバーにjava.util.Dateオブジェクトを送信する際に問題が発生しました。 Date WebParamでWebMethodを呼び出すときに動作します。しかし、WebParamとしてDateを持つカスタムオブジェクトを持つWebMethodを呼び出す場合は、常にnullです。だから、日付SOAP webservice

、この作品:

@WebMethod(operationName="thisWorks") 
public void thisWorks(@WebParam(name="from")Date from) 
{ 
    System.out.println(from); //prints the value of the date 
} 

これは動作しません:

class MyObj { java.util.Date getMyDate(); } 

@WebMethod(operationName="thisDoesntWork") 
public void thisDoesntWork(@WebParam(name="myObj")MyObj myObj) 
{ 
    System.out.println(myObj.getMyDate()); //prints null 
} 

クライアント:

ServiceClient client = new ServiceClient(); 
client.thisWorks(DateTime.Now); 
myObj o = new myObj(); 
o.myDate = DateTime.Now; 
client.thisDoesntWork(o); 
+0

http://www.fiddler2.com/fiddler2/またはhttp://devolutions.net/products/HTTP-Spy-Net.aspxを使用して、サーバーとクライアントの間で送信される内容をデバッグしてください。 –

+0

あなたが表示されていますJava側、あなたのC#のクライアントコードを共有する気に? –

+0

クライアントコード – Klaasvaak

答えて

1

WSDLはMyDateに該当ために余分なフィールドを生成します。「BOOL myDateSpecified "となります。私はこれをtrueに設定すると動作します。これは奇妙なので、私はintフィールドを持っているのではなく、指定したフィールドを取得していますが、今は指定フィールドを設定する必要はありません。

1

この問題は.NET XMLシリアライザのようです。私はJavaで自分のコードを書き直しました。それは美しく動作します。

移動区切った名前空間へのオブジェクトの宣言全体:

私は{!variable}Specified = true;文を回避するための方法で考えることができます。したがって、WSDLを更新するたびにコードが上書きされることはありません。

プロパティの宣言でSystem.Nullable<bool>を使用しないでください。boolまたはDateTimeまたはDoubleを使用してください。ポイントを取得する?

関連する問題