MediaWiki API – 从Excel编辑页面 – <error code =“mustposttoken”…>

我收到以下错误尝试通过MediaWiki API发出编辑命令。

<error code="mustposttoken" info="The token parameter was found in the query string, but must be in the POST body" xml:space="preserve"> 

这是我在Excel中使用的代码:

  Dim objHTTP As New WinHttp.WinHttpRequest URL = "http://wiki.address.net/w/api.php?format=json&action=edit&title=TestPage&section=0&text=testing123&token=" & strEditToken objHTTP.Open "POST", URL, False objHTTP.Send Debug.Print objHTTP.ResponseText 

我有一个单独的部分代码,我login并检索一个csrf令牌。 该代码在最近更新到Media Wiki 1.24.1之前已经工作

您将该令牌发布到URL中,但出于安全原因,它必须位于请求正文中。

我通过查看VBA的POST解决了这个问题。 设置用户代理和内容types。 此外,在URLstring中使页面的标题更小。

 Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") URL = "http://wiki.address.net/w/api.php" strEditToken = "####################" objHTTP.Open "POST", URL, False objHTTP.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.SetRequestHeader "Content-type", "application/x-www-form-urlencoded" objHTTP.Send ("format=json&action=edit&title=" & lcase("TestPage") & "&section=0&text=testing123&token=" & strEditToken")