【问题标题】:how to pass xml to specific REST service as part of uri如何将 xml 作为 uri 的一部分传递给特定的 REST 服务
【发布时间】:2013-08-27 20:37:00
【问题描述】:

我必须调用具有以下 uri 的 Web 服务:

https://www.domain.com/accounts/clients/{clientId}/getdocuments

有人能告诉我我应该如何将 xml 传递给这个吗?我知道我可以将它作为 json 传递,这将是直截了当的,但不能因为这个项目中的所有内容都是通过 xml 完成的。

这是一个“GET”命令,我正在使用 c# 使用 HttpWebRequest,其他方法工作正常,但我正在努力处理这个特定的 uri。

写流时我应该只传递一个 1234 吗?我有点怀疑!

我在文档中只有这一行,告诉我这是请求

{clientId} -

有什么想法吗?

谢谢。

【问题讨论】:

    标签: c# xml rest xml-serialization


    【解决方案1】:

    看起来你应该只传递一个客户端 ID,而不是一个 xml 文档,使用 GET 方法是不可能的

    【讨论】:

    • 我不会说不可能。硬,长度有限等。
    • @I4V 大多数 xml 文件都有换行符,这在查询字符串中是非法的。但是你说得对,设计这样的 API 是很愚蠢的。
    • 当你转义用于在url中使用的xml字符串时,换行符将是%0d%0a,所以没问题。 (HttpUtility.UrlEncode(xml))。
    • 我没有尝试传递 xml 文档。对不起,如果不清楚这一点!我只是想弄清楚如何使用xml将参数传递给uri。我只是对 uri 在 uri 的 2 个(不知道那叫什么!)部分之间有这个参数感到困惑。我有一个登录 (..../security/login) 函数,它的 uri 中没有参数,我没有问题通过 UID、PWD 和 API 密钥等...使用 xml 格式并写入请求流。
    【解决方案2】:

    如果你真的想使用 GET 方法发送你的文件,那么你必须将它编码到你的请求 URI 中,这在 RFC 中是不推荐的:http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3

    【讨论】:

    • 由于我已经登录,虽然不可见,但每个请求都会发送一个令牌,因此在 uri 中查看 clientid 在这里不是问题。我试图了解在使用 xml 而不是 json 时如何处理 uri 中定义的这个参数 {clientId}。
    【解决方案3】:

    我刚刚发现了我的问题! XML 根本不参与其中。

    你只需要直接在uri中传递参数作为uri的一部分,所以如果你有:

    https://www.domain.com/accounts/clients/{clientId}/getdocuments

    比如你的clientId = a8v8s94244b89sf32,当你调用HttpWebRequest时,你需要调用如下的uri:

    https://www.domain.com/accounts/clients/a8v8s94244b89sf32/getdocuments

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多