解决 从API响应中读取福彩12选5走势图

已加入
2020年3月20日
留言内容
65
编程经验
10+
大家好

我目前正在使用REST API,并且在读取响应福彩12选5走势图时需要一些指导。我在读取此类福彩12选5走势图方面的经验非常少,我正在尝试找到最佳方法。

以下是获取API福彩12选5走势图的代码。

C#:
 public string ModitarWebRequestCall()
        {
            string apiUrl = "//api.moditar.com/Document/GetContent";
            string username = "JohnDoe";
            string password = "Password123";
            string collection = "ea85fbf3-5858-4348-bcab-08a8f39ad30c";
            string markasread = "False";

            var request = (HttpWebRequest)WebRequest.Create(apiUrl);
            request.Method = "GET";
            request.Accept = "application/xml";

            request.Headers.Add("username", username);
            request.Headers.Add("password", password);
            request.Headers.Add("collection", collection);
            request.Headers.Add("Markasread", markasread);

            string content = string.Empty;
            try
            {
                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    using (var stream = response.GetResponseStream())
                    {
                        using (var sr = new StreamReader(stream))
                        {
                            content = sr.ReadToEnd();
                            sr.Close();
                            Console.WriteLine("Data received from Moditar");
                        }
                    }
                }
                return content;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return null;
            }
        }

我正在使用下面的代码来调用上述方法,这是我需要处理福彩12选5走势图的地方。

C#:
        public void ProcessDatafromModitarApi()
        {
            var getData = new ModitarApiConnection();
            getData.ModitarWebRequestCall();
        }

读取此福彩12选5走势图的最佳方法是什么?有json,xml读取器选项,将其保留为文本等选项,因此有很多选择。任何对此的指导将不胜感激。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
更为重要的问题是,获取福彩12选5走势图后将如何处理?

这将是您接收和使用哪种格式的决定因素。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
福彩12选5走势图的类型是什么?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
无论收到的类型如何,都可以将其存储在类对象中。好的猫头鹰面向对象的方式...

根据收到的福彩12选5走势图类型,我可以提供更好的响应。
 
已加入
2020年3月20日
留言内容
65
编程经验
10+
无论收到的类型如何,都可以将其存储在类对象中。好的猫头鹰面向对象的方式...

根据收到的福彩12选5走势图类型,我可以提供更好的响应。
嗨道林斯

抱歉,福彩12选5走势图以XML格式通过。从我对XML的有限了解来看,子节点的负载看起来相当复杂。所以我不太确定如何处理它,也没有在C#中尝试过类似的事情。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
您想反序列化接收到的福彩12选5走势图到列表中,并从列表到SQL Server。您可以通过一种Linq方法完成所有操作。

所以,如果我理解这一点...您想从请求中接收福彩12选5走势图,读取该福彩12选5走势图,然后将该福彩12选5走势图插入另一个福彩12选5走势图库?

无论哪种方式,您都在从XmlSerializer类中寻找反序列化。
 
已加入
2020年3月20日
留言内容
65
编程经验
10+
您想反序列化接收到的福彩12选5走势图到列表中,并从列表到SQL Server。您可以通过一种Linq方法完成所有操作。

所以,如果我理解这一点...您想从请求中接收福彩12选5走势图,读取该福彩12选5走势图,然后将该福彩12选5走势图插入另一个福彩12选5走势图库?

无论哪种方式,您都在从XmlSerializer类中寻找反序列化。

嗨道林斯

感谢您的建议,是的,这正是我需要对XML进行的操作。
我已经建立了接收福彩12选5走势图的StreamReader,是否必须替换所有代码以使用XmlSerializer?还是我可以反序列化已经通过的内容?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
已加入
2020年3月20日
留言内容
65
编程经验
10+
我有点在黑暗中摸索,但不确定自己是否正确执行此操作,但是我得到了"root element missing"当我将鼠标悬停在异常上时出错。

C#:
            string content = string.Empty;
            try
            {
                using (var response = (HttpWebResponse)request.GetResponse())
                {
                    using (var stream = response.GetResponseStream())
                    {
                        using (var sr = new StreamReader(stream))
                        {
                            content = sr.ReadToEnd();

                            XmlSerializer serializer = new XmlSerializer(typeof(XmlElement));
                            content = (string)serializer.Deserialize(sr);

                            sr.Close();
                        }
                    }
                }
                return content;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return null;
            }
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
您确定您的请求中接收到XML福彩12选5走势图吗?

由于第13行,第10行是多余的。

使用 sr.ReadToEnd() 代替 sr on line 13.

还要注意,第13行的Deserialize需要xml读取器,而不是流读取器。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
XmlElement的开头是否实际上命名为XmlElement?

向我们显示您的一些XML,但没有任何敏感福彩12选5走势图?

注意我链接的文档上的用法:
C#:
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
   <inventory:ItemName>Widget</inventory:ItemName>
   <inventory:Description>Regular Widget</inventory:Description>
   <money:UnitPrice>2.3</money:UnitPrice>
   <inventory:Quantity>10</inventory:Quantity>
   <money:LineTotal>23</money:LineTotal>
</OrderedItem>
@跳伞 并且您想知道为什么我更喜欢Json eh。 🙃
 
已加入
2020年3月20日
留言内容
65
编程经验
10+
XmlElement的开头是否实际上命名为XmlElement?

向我们显示您的一些XML,但没有任何敏感福彩12选5走势图?

注意我链接的文档上的用法:

@跳伞 并且您想知道为什么我更喜欢Json eh。 🙃

嗨,Sheingings,我已经附加了XML文件,因为它是一个非常复杂的XML文件,我之前从未使用过类似的东西。

"还要注意,第13行的Deserialize需要xml读取器,而不是流读取器。"

那么,我是否必须重新编写流阅读器代码并将其替换为XMLreader代码?我以为我可以反序列化已经通过流读取器的福彩12选5走势图,或者那不可能吗?
 

附件

  • response.zip
    17.4 KB · Views: 2

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
我以为我可以反序列化流阅读器中已经收到的福彩12选5走势图
取决于,您以哪种方式处理响应。但是,文档建议使用xml reader,而Deseriaize方法采用xmlreader。笔记 :
或者,OP可以直接传递流并绕过流读取器。
如果没有其他人,我稍后再尝试。
 
已加入
2020年3月20日
留言内容
65
编程经验
10+
我确实在网上看到了一些东西,开发人员使用MemoryStreamer将福彩12选5走势图流式传输到内存中,然后进行反序列化,不确定我是否为自己复杂化了。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
您甚至不必将其流传输到内存流中(除非您计划多次对同一流进行反序列化)。

This (using the new C# 8.0 using) would be sufficient:
C#:
using var response = (HttpWebResponse)request.GetResponse();
using var stream = response.GetResponseStream();
var serializer = new XmlSerializer(typeof(OrderedItem));
return (OrderedItem)serializer.Deserialize(stream);
(If you have an older version of C#, obviously use the scoped version of using.)
 
已加入
2020年3月20日
留言内容
65
编程经验
10+
您甚至不必将其流传输到内存流中(除非您计划多次对同一流进行反序列化)。

This (using the new C# 8.0 using) would be sufficient:
C#:
using var response = (HttpWebResponse)request.GetResponse();
using var stream = response.GetResponseStream();
var serializer = new XmlSerializer(typeof(OrderedItem));
return (OrderedItem)serializer.Deserialize(stream);
(If you have an older version of C#, obviously use the scoped version of using.)
谢谢跳伞

我只是被所有不同的选项所困扰,并使自己更加困惑。现在的主要焦点只是使XML福彩12选5走势图反序列化。在您的示例中,我假设"OrderedItem"XML文件中的节点是什么?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
否。这是将读取XML福彩12选5走势图的类。通常,类类型名称与XML元素名称匹配,但是可以重写。您应该花一些时间阅读有关XML序列化和反序列化的信息,而不是仅仅在屏幕上扔代码以查看问题所在。

 
最佳 底部