如何使用 Power Query 的 Web.Contents 发布多部分/表单数据
Posted
技术标签:
【中文标题】如何使用 Power Query 的 Web.Contents 发布多部分/表单数据【英文标题】:How to POST a multipart/form-data using Power Query's Web.Contents 【发布时间】:2015-02-06 08:35:46 【问题描述】:在 Power Query 中,我可以使用 Web.Contents 函数从 Web 下载数据,但是有一个 api 要求请求包含以下格式的多部分/表单数据
"__rdxml"=<*Some data*>
那么如何使用 Web.Contents 函数来做到这一点呢?
我试过了,做
...
PostContent = "__rdxml=<*Some data*>",
Source Web.Contents(url,Content=Text.ToBinary(PostContent))
...
但是服务器响应400 Bad Request
。
我用 Fiddler 检查了原始请求,似乎请求没有使用content-type=multipart/form-data
标头发送。
我尝试使用content-type=multipart/form-data
手动添加内容类型标头,但这也不起作用。回复中的 400 Bad Request
相同。
有什么想法吗?
【问题讨论】:
【参考方案1】:multipart/form-data 是一种相当复杂的编码,需要一堆特定于 MIME 的标头。我会先尝试看看您是否可以改用 application/x-www-form-urlencoded:
let
actualUrl = "http://some.url",
record = [__rdxml="some data"],
body = Text.ToBinary(Uri.BuildQueryString(record)),
options = [Headers =[#"Content-type"="application/x-www-form-urlencoded"], Content=body],
result = Web.Contents(actualUrl, options)
in
result
编辑:我提出了一个将 multipart/form-data 与 Power Query 结合使用的示例。在https://gist.github.com/CurtHagenlocher/b21ce9cddf54e3807317
【讨论】:
如果正文中需要多个值,可以在记录中将它们作为逗号分隔值添加为值数组。此外,为了便于阅读,请放在下一行。即记录 = [field1="一些数据", field2="一些数据"]以上是关于如何使用 Power Query 的 Web.Contents 发布多部分/表单数据的主要内容,如果未能解决你的问题,请参考以下文章
Power BI Python 在Power BI Desktop中Python代码如何使用Power Query数据
Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?