2016-12-15 3 views
1

オブジェクトとしてXMLファイルを受け入れる第三者のWebサービスを呼び出す必要があります。オブジェクトとしてXMLファイルを受け入れるWebサービスを呼び出す際の例外

-<Claims> 
    -<Claim> 
     <ID>ID1</ID> 
     -<Person> 
      <ID>ID1</ID> 
     </Person> 
     -<Encounter> 
      <Type>1</Type> 
     </Encounter> 
     -<Diagnosis> 
      <CodeTerm>ICD10</CodeTerm> 
      <Type>Principal</Type> 
      <Code>A12.0</Code> 
     </Diagnosis> 
     -<Activity> 
      <ID>ID1</ID> 
      <CodeTerm>ADA</CodeTerm> 
      <Start>12/02/2013 12:12</Start> 
      <Code>84132</Code> 
      <Quantity>0</Quantity> 
     </Activity> 
    </Claim> 
</Claims> 

私はサンプルクラスを作成し、値をハードコードしました。 Webサービスを呼び出す際に以下の例外を取得する。

**System.InvalidOperationException** 
Additional information: There was an error generating the XML document. 
Message: **The type CallingWebserviceTest.Claims was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.** 

Code: 



    XDocument doc = XDocument.Load(FILENAME); 

        Claims c = new Claims(); 
        List<ClaimsClaim> c1 = new List<ClaimsClaim>(); 
        ClaimsClaim cc = new ClaimsClaim(); 
        cc.claimID = "ID1"; 
        cc.personID = "ID1"; 
        cc.encounterType = 1; 
        cc.codeTerm = "ICD10"; 
        cc.codeType = "A12.0"; 
        cc.activityID = "ID1"; 
        cc.codeTerm = "ADA"; 
        cc.start = "12/02/2013 12:12"; 
        cc.activityCode = 84132; 
        cc.quantity = 0; 
        c1.Add(cc); 
        c.claims = c1; 
        Console.WriteLine(cc.personID);    
        Gway g = new Gway(); 
        responseClaimEdit[] responce; 
        string msg; 


    Console.WriteLine(g.DCG("1", c, "NS028", "|N28", out responce, out msg).ToString()); 

Class: 

    [XmlInclude(typeof(ClaimsClaim))] 
     [Serializable] 
     [XmlRoot] 
     public class Claims 
     { 
      public List<ClaimsClaim> claims { get; set; } 

     } 


     [Serializable] 
     public class ClaimsClaim 
     { 
      public string claimID { get; set; } 
      public string personID { get; set; } 
      public int encounterType { get; set; } 
      public string codeTerm { get; set; } 
      public string codeType { get; set; } 
      public string code { get; set; } 
      public string activityID { get; set; } 
      public string activityCodeTerm { get; set; } 
      public string start { get; set; } 
      public int activityCode { get; set; } 
      public int quantity { get; set; }   
     } 

誰でもお手伝いできますか? Webサービスでは変更はできません。

答えて

0

はそれがXDocumentクラスは次のような標準のXMLヘッダーを持つようにXMLファイルを期待していることは可能です:

<?xml version="1.0" encoding="UTF-8"?> 
+0

私はわからない、サービスプロバイダに連絡する必要があります。しかし、これを渡す方法を教えてもらえますか?<?xml version = "1.0" encoding = "UTF-8"?> –

+0

はい、私のクラスでこれを追加する方法は分かりますか? –

+0

通常、私が言及した行は、標準XMLファイルの最初の行です。いくつかのクラスライブラリは、この行のないXMLファイルを処理しますが、そのうちのいくつかは処理しませんし、それを必要とします。 ファイルの先頭にこの行を挿入し、アプリケーションを再実行して違いがあるかどうかを確認することで、簡単なテストを行うことができます。 また、「CallingWebserviceTest.Claims was expected not」というエラーメッセージを見ても、呼び出し元のクライアントアプリケーションがClaimsクラスの内容を知らないようです。それはちょうど推測ですが、それも問題かもしれません。 –

関連する問題