我使用下面的代码从 C# 调用 OData 服务(这是来自 Odata.org 的工作服务),但我没有得到任何结果。
错误在response.GetResponseStream()
。
这里是错误:
Length = 'stream.Length' threw an exception of type 'System.NotSupportedException'
我想调用该服务并从中解析数据,最简单的方法是什么?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Net;
using System.IO;
using System.Xml;
namespace ConsoleApplication1
{
public class Class1
{
static void Main(string[] args)
{
Class1.CreateObject();
}
private const string URL = "http://services.odata.org/OData/OData.svc/Products?$format=atom";
private static void CreateObject()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "GET";
request.ContentType = "application/xml";
request.Accept = "application/xml";
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
XmlTextReader reader = new XmlTextReader(stream);
}
}
}
}
}
最佳答案
我在我的机器上运行了你的代码,它执行得很好,我能够遍历 XmlTextReader 检索到的所有 XML 元素。
var request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "GET";
request.ContentType = "application/xml";
request.Accept = "application/xml";
using (var response = request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
var reader = new XmlTextReader(stream);
while (reader.Read())
{
Console.WriteLine(reader.Value);
}
}
}
但正如@qujck 所建议的,看一下 HttpClient。它更易于使用。
关于c# - 从 C# 调用 OData 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19264715/