我试图使用XmlProvider
的{{1}}而我遇到了一个小问题。我正在使用的API要求发送包含FSharp.Data
和Accept
的HTTP标头。现在,如果我这样做..
Accept-Language
这样可以正常工作,不幸的是我无法直接使用像这个let afRequestString url =
Http.RequestString(
url,
httpMethod="GET",
headers = [ Accept HttpContentTypes.Xml; AcceptLanguage "sv-se,sv" ])
这样的XmlProvider工作,这也不会起作用:
type foo = XmlProvider<afRequestString "bar">
编译器的抱怨是提供给let foo = afRequestString "bar"
type bar = XmlProvider<foo>
的{{1}}必须是静态的和常量的,这对我来说有点奇怪,因为根据我的理解,let-bindings是不可变的,所以它们是在自然界不变。
无论如何,我发现的唯一可行的方法就是这样做
Sample
但这实际上似乎是一种过于复杂的方式。难道有更简单的方法吗?
答案 0 :(得分:2)
使用XML类型提供程序(和其他类型提供程序)时,必须在编译时知道该示例。这意味着您不能使用某些结果的值(或多或少复杂的调用)。
如果您需要指定标题之类的东西来获取示例,那么最好的选择是首先获取示例文件(以某种方式)并将其保存到本地文件(或者您可以将文件作为您的一部分获取构建脚本,如果你总是想拥有最新版本。)
XmlProvider
有a couple of parameters指定如何获取示例,我怀疑为HTTP请求添加更多配置是合理的,但在本地保存文件通常应该足够好...... < / p>