3

在 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在响应中也一样。

任何想法?

4

1 回答 1

9

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

编辑:我想出了一个在 Power Query 中使用 multipart/form-data 的示例。它位于https://gist.github.com/CurtHagenlocher/b21ce9cddf54e3807317

于 2015-02-08T09:00:16.920 回答