WebRequest标头辅助

时间:2012-06-01 10:32:06

标签: c# http-headers webrequest

我正在尝试将一些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();
        }

1 个答案:

答案 0 :(得分:0)

据我所知,状态错误:未知命令动词不是已知的http响应 您正在处理此问题,就好像http请求格式错误,但我感觉没有http层问题。
您是否拥有您想要达到的服务的源代码,或者它是第三方组件? 我猜他们期望更多的东西只是简单的xml,也许服务是扫描你的xml的命令动词。