2012-01-10 37 views
1

我不能够获得链接到MediaWiki编辑令牌:无法获得编辑令牌链接到MediaWiki API

请求

POST /w/api.php HTTP/1.1 
Host: en.wikipedia.org 
Accept: */* 
User-agent: Sbose7890 
Content-Length: 59 
Content-Type: application/x-www-form-urlencoded 

action=query&prop=info&intoken=edit&titles=Java&format=json 

响应

HTTP/1.0 200 OK 
Date: Tue, 10 Jan 2012 09:14:03 GMT 
Server: Apache 
X-Content-Type-Options: nosniff 
Cache-Control: private 
Vary: Accept-Encoding 
Content-Length: 209 
Content-Type: application/json; charset=utf-8 
X-Cache: MISS from sq34.wikimedia.org 
X-Cache-Lookup: MISS from sq34.wikimedia.org:3128 
X-Cache: MISS from sq59.wikimedia.org 
X-Cache-Lookup: MISS from sq59.wikimedia.org:80 
Connection: close 

{ 
    "query": { 
    "pages": { 
     "69336": { 
     "starttimestamp": "2012-01-10T09:14:03Z", 
     "lastrevid": 469959190, 
     "touched": "2012-01-07T11:38:04Z", 
     "pageid": 69336, 
     "title": "Java", 
     "edittoken": "+\\", 
     "ns": 0, 
     "length": 37800, 
     "counter": "" 
     } 
    } 
    } 
} 

我尝试了一下使用hurl.it

我也登录

回答

3

您购买的编辑令牌:+\。这是匿名用户使用的,并且始终是相同的。请参阅mw:Manual:Edit token,以及从那里链接的修订。

问题是无论您的登录信息如何,hurl都必须登录。它必须发送有效的enwiki_session cookie,例如您的cookie。但不要发布你的,每个人都可以用它登录!

+0

http://en.wikipedia.org/w/api.php?action=query&prop = info | revisions&intoken = edit&titles = Main%20Page生成一个编辑标记。我的应用程序如何获得令牌?它是否必须专门发送Cookie? (我可以使用控制台应用程序来做到这一点)? – sbose 2012-01-10 09:48:02

+0

是的,当访问该uri时,浏览器会将您的登录cookie发送到维基百科。 HURL不知道,从哪里知道?你的应用程序也必须发送cookie,你没有在你的登录程序中得到这些信息吗?如果它是浏览器(javascript)应用程序,浏览器将自动发送任何cookie。 – Bergi 2012-01-10 09:51:54

+0

所以,我需要包含客户端代码(比如在Javascvript中)发送cookie。对? – sbose 2012-01-10 09:55:33

1

总之,不使用原始的MediaWiki API,有every conceivable language out there客户端为您处理所有这些乏味的东西。例如,如果你使用Ruby,这里的所有MediaWiki::Gateway代码,你需要登录和编辑文章:

mw = MediaWiki::Gateway.new(your-wiki) 
mw.login(user, pw) 
mw.create("Article", "Hello world")