gpt4 book ai didi

c# - 将 XML 发送到 WCF 时出现 400 错误请求

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:19 24 4
gpt4 key购买 nike

我正在尝试将一些 XML 发布到 Web 服务,但每次我这样做时,都会返回 400 Bad Request 错误。

在 MyService.cs 中:

[ServiceContract(Namespace = "http://foo")]
public class MyService
{

[OperationContract, WebInvoke(UriTemplate = "/GetData/", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, Method = "POST")]
public string GetData(DataRequest req)
{
return "Success!";
}
}

[DataContract(Namespace = "http://foo")]
public class DataRequest
{
[DataMember]
public string ID { get; set; }
[DataMember]
public string Data { get; set; }
}

在单独的控制台应用程序 Program.cs 中:

    Path p = "C:\\Users\\sflan\\Desktop\\test.xml";
string url = "http://foo/MyService.svc/GetData/";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/xml";

byte[] data = Encoding.UTF8.GetBytes(p.readFile());
req.ContentLength = data.Length;
using (Stream s = req.GetRequestStream())
{
s.Write(data, 0, data.Length);
s.Close();
}

try
{
WebResponse response = req.GetResponse();
using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(rdr.ReadToEnd());
rdr.Close();
}
}
catch (Exception ex) { Console.WriteLine(ex.Message); }

我试图在文件中发送的 XML:

<root>
<Users ID="2" Data="This is some sample data." />
</root>

我已经搜索了几个小时来寻找解决方案,但始终找不到。我的 web.config 允许最大缓冲区大小/池大小以及我能够找到的所有相关内容,但仍然没有运气。值得注意的是,如果我从我的 GetData 方法签名中删除“DataRequest req”,我会收到成功消息,但我需要能够处理 XML 数据。

谁能告诉我我做错了什么?

最佳答案

XML 格式不正确,我没有从以同一问题为中心的帖子中发现这一点。

正确的 XML 如下:

 <DataRequest xmlns="http://foo">
<Data>This is some sample data.</Data>
<ID>2</ID>
</DataRequest>

关于c# - 将 XML 发送到 WCF 时出现 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com