我正在尝试将一些 XML 发布到公开的服务中。我正在使用 System.Net.WebRequest 发布所需的信息,并使用 Fiddler 我可以看到我的帖子的结果如下:
POST http://x.x.x.x:5010/FindReservationByRoom HTTP/1.1
Content-Type: text/xml
Transaction: 1
Host: x.x.x.x:5010
Content-Length: 29
Expect: 100-continue
<Body><Room>103</Room></Body>
不幸的是,上述方法似乎不起作用。与此服务通信的说明表明,第一行实际上应该是:
POST FindReservationByRoom HTTP/1.1
但是 WebRequest 似乎将整个 URI 附加到第一行。我不是 HTTP 专家,所以我不确定我在这里做错了什么。任何建议将不胜感激。
编辑:调用返回的错误消息是:
Unknown command verb '<Body><Room>103</Room></Body>POST'
编辑:我用来拨打电话的代码是:
System.Net.WebRequest req = System.Net.WebRequest.Create("http://x.x.x.x:5010/FindReservationByRoom");
req.Headers.Clear();
req.ContentType = "text/xml";
req.Method = "POST";
StringBuilder xml = new StringBuilder();
xml.Append("<Body><Room>103</Room></Body>");
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(xml.ToString());
StringBuilder header = new StringBuilder();
req.Headers.Add("Transaction: 1");
req.ContentLength = bytes.Length;
Stream os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
System.Net.WebResponse resp = req.GetResponse();
if (resp != null)
{
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
string responsecontent = sr.ReadToEnd().Trim();
}