F#XmlProvider和HTTP标头

时间:2014-11-25 14:20:41

标签: f# type-providers f#-data

我试图使用XmlProvider的{​​{1}}而我遇到了一个小问题。我正在使用的API要求发送包含FSharp.DataAccept的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

但这实际上似乎是一种过于复杂的方式。难道有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

使用XML类型提供程序(和其他类型提供程序)时,必须在编译时知道该示例。这意味着您不能使用某些结果的值(或多或少复杂的调用)。

如果您需要指定标题之类的东西来获取示例,那么最好的选择是首先获取示例文件(以某种方式)并将其保存到本地文件(或者您可以将文件作为您的一部分获取构建脚本,如果你总是想拥有最新版本。)

XmlProvidera couple of parameters指定如何获取示例,我怀疑为HTTP请求添加更多配置是合理的,但在本地保存文件通常应该足够好...... < / p>