【发布时间】:2012-11-21 13:57:41
【问题描述】:
我在尝试使用 Rest Sharp 进行 POST 时遇到问题。我正在尝试调用不完全符合现代标准的 Web 服务,并且我需要能够在我的帖子正文中发布请求 XML。
如果我只是对 RestRequest 对象执行 request.AddBody(xmlObject),则会将一个名为 text/xml 的参数添加到请求中。在这种情况下,我收到来自服务器的错误响应,提示“抛出异常:prolog 中不允许内容”。这告诉我服务器正在尝试处理参数的键 (text/xml=) 以及值。
当我在 chrome 中使用 REST 控制台并在 RAW 正文字段中使用所需的 xml 请求时,一切都按预期工作。
关于如何使用 Rest Sharp 进行这项工作的任何想法?
编辑:看起来我需要使用 request.AddFile("name", bytes_to_add, "file_name")。但是,当我尝试这样做时,我得到一个异常(“System.InvalidOperationException:在写入开始后无法设置此属性。”),它看起来像一个从未解决过的带有 RestSharp 的issue。我可能只需要使用 HttpWebRequest 库发出请求。
【问题讨论】:
-
你能发布序列化请求的样子吗?最简单的方法是使用 Fiddler 捕获它。该异常通常意味着在请求中打开
标记之前有一些数据。 -
我通过使用 HttpWebRequest 并直接写入请求流来使其工作。我仍在使用 Rest Sharp 序列化程序,所以我知道该对象已正确序列化。但我不喜欢直接使用 HttpWebRequest。所以我克隆了 Rest Sharp 代码,看看我是否能弄清楚如何修复抛出的异常。