将 Xml 文件传递给控制台应用程序中的方法时出现问题
Issues passing an Xml file to a method in console application
我正在开发一个 c# 控制台应用程序,我正在使用 xml 文件向 Web api 制作一个 Http Post request
,我对 [=13 有点陌生=] 和 web 服务,但我为请求找出了以下代码,但未能将 xml data
传递给方法
static void Main(string[] args)
{
string desturl=@"https://xyz.abcgroup.com/abcapi/";
Program p = new Program();
System.Console.WriteLine(p.WebRequestPostData(desturl, @"C:\Applications\TestService\FixmlSub.xml"));
}
public string WebRequestPostData(string url, string postData)
{
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
req.ContentType = "text/xml";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
using (System.Net.WebResponse resp = req.GetResponse())
{
if (resp == null) return null;
using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()))
{
return sr.ReadToEnd().Trim();
}
}
}
出于显而易见的原因,上面的代码抛出 404 错误,因为我认为我没有正确传递 xml data
我可以知道如何解决这个问题吗?
您没有 posting xml,您 posting 字符串 C:\Applications\TestService\FixmlSub.xml
更改您的方法调用:
System.Console.WriteLine(p.WebRequestPostData(desturl, @"C:\Applications\TestService\FixmlSub.xml"));
到
var xml = XElement.Load(@"C:\Applications\TestService\FixmlSub.xml");
System.Console.WriteLine(p.WebRequestPostData(desturl, xml.ToString(SaveOptions.DisableFormatting));
如果您想学习 post / 接收,那就去吧。但是如果你想使用它们,已经有经过良好测试的开源库。
Servicestack 的非免费版本。
还有他们的老 free-version。我认为旧的免费版本很棒。我从来没有尝试过新的。你处理对象,比如一个 Employee 并将其传递给图书馆,它会翻译成 xml 或任何网络服务想要的东西。
如果需要,您可以 post 整个字符串。他们也有很好的扩展方法来帮助你。
我正在开发一个 c# 控制台应用程序,我正在使用 xml 文件向 Web api 制作一个 Http Post request
,我对 [=13 有点陌生=] 和 web 服务,但我为请求找出了以下代码,但未能将 xml data
传递给方法
static void Main(string[] args)
{
string desturl=@"https://xyz.abcgroup.com/abcapi/";
Program p = new Program();
System.Console.WriteLine(p.WebRequestPostData(desturl, @"C:\Applications\TestService\FixmlSub.xml"));
}
public string WebRequestPostData(string url, string postData)
{
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
req.ContentType = "text/xml";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
using (System.Net.WebResponse resp = req.GetResponse())
{
if (resp == null) return null;
using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()))
{
return sr.ReadToEnd().Trim();
}
}
}
出于显而易见的原因,上面的代码抛出 404 错误,因为我认为我没有正确传递 xml data
我可以知道如何解决这个问题吗?
您没有 posting xml,您 posting 字符串 C:\Applications\TestService\FixmlSub.xml
更改您的方法调用:
System.Console.WriteLine(p.WebRequestPostData(desturl, @"C:\Applications\TestService\FixmlSub.xml"));
到
var xml = XElement.Load(@"C:\Applications\TestService\FixmlSub.xml");
System.Console.WriteLine(p.WebRequestPostData(desturl, xml.ToString(SaveOptions.DisableFormatting));
如果您想学习 post / 接收,那就去吧。但是如果你想使用它们,已经有经过良好测试的开源库。
Servicestack 的非免费版本。 还有他们的老 free-version。我认为旧的免费版本很棒。我从来没有尝试过新的。你处理对象,比如一个 Employee 并将其传递给图书馆,它会翻译成 xml 或任何网络服务想要的东西。
如果需要,您可以 post 整个字符串。他们也有很好的扩展方法来帮助你。