【问题标题】:Exception while calling a webservice which accepts xml file as object调用接受 xml 文件作为对象的 web 服务时出现异常
【发布时间】:2016-12-15 14:03:00
【问题描述】:

我需要调用一个接受 xml 文件作为对象的第三方网络服务。

-<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 服务中进行任何更改。

【问题讨论】:

    标签: xml web-services


    【解决方案1】:

    XDocument 类是否可能期望 XML 文件具有标准 XML 标头,如下所示:

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

    【讨论】:

    • 我不确定,必须联系服务提供商。但是你能告诉我如何通过这个 -
    • 是的,我明白了,但是如何在我的课堂上添加这个?
    • 通常,我提到的那一行是标准 XML 文件中的第一行。一些类库将处理没有此行的 XML 文件,但其中一些不会处理并需要它。您可以通过在文件开头插入这一行并重新运行您的应用程序来查看它是否有所不同来做一个简单的测试。此外,查看错误消息,CallingWebserviceTest.Claims was not expected 似乎调用客户端应用程序不知道 Claims 类是什么。这只是一个猜测,但这也可能是一个问题。
    • 你会如何将它添加到课堂上?你可以像这个例子一样用 XDocument 添加它: var doc = new XDocument( new XDeclaration("1.0", "utf-16", "yes"), new XElement("Elem1", "Elem2"));
    猜你喜欢
    • 2018-02-02
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多