0

我在尝试使用 Rest Sharp 进行 POST 时遇到问题。我正在尝试调用不完全符合现代标准的 Web 服务,并且我需要能够在我的帖子正文中发布请求 XML。

如果我只是对 RestRequest 对象执行 request.AddBody(xmlObject) ,则会将一个名为 text/xml 的参数添加到请求中。在这种情况下,我收到来自服务器的错误响应,提示“抛出异常:prolog 中不允许内容”。这告诉我服务器正在尝试处理参数的键 (text/xml=) 以及值。

当我在 RAW 正文字段中使用 chrome 中的 REST 控制台和所需的 xml 请求时,一切都按预期工作。

关于如何使用 Rest Sharp 进行这项工作的任何想法?

编辑:看起来我需要使用 request.AddFile("name", bytes_to_add, "file_name")。但是,当我尝试这样做时,出现异常(“System.InvalidOperationException:在写入开始后无法设置此属性。”),这看起来像是RestSharp 的一个从未解决的问题。我可能只需要使用 HttpWebRequest 库发出请求。

4

1 回答 1

1

你可能想多了。RestSharp.AddBody 将对象作为参数,并使用 JSON 或 XML 序列化程序自动将其序列化为正确的格式,具体取决于 RequestFormat 属性。

直接添加 XML 没有意义。REST 的部分魔力在于它支持多种格式,而不仅仅是 XML。RestSharp 在编写时考虑到了这一点,因此它的所有公共接口都只使用 POCO。

简单的解决方案就是不序列化对象。您不想添加 xmlObject,只需将您的真实 C# 对象传递给 AddBody 方法并让它处理序列化。

于 2012-11-21T14:05:49.510 回答