我正在开发一个网站,除其他外,它通过MetaweBlog API提供了博客。我已经与几个博客客户端合作,但是Windows Live Writer杀死了我。

我已经完成了网络跟踪以捕获实际的来回流量。这是结果:

WLW要求我的博客URL,用户名和密码。 URL IS/item/list/type/blog/user/1/bloguser/1,我提供此信息。

我看到WLW提出了该URL的HTTP请求。它得到了回应。该响应包括RSD和WLWManifest链接标签。

WLW的下一个请求是/mwapi/rsd/bloguser/1,这是正确的URL。

响应是metaweblog RSD响应:

<?xml version="1.0" encoding="UTF-8"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
<service>
<engineName>Cahoots2</engineName>   
<engineLink>http://sourceforge.net/projects/cahoots/</engineLink>  
<homePageLink>http://10.0.1.39:8888</homePageLink>
<apis>
  <api name="MetaWeblog" blogID="1" preferred="true" apiLink="http://10.0.1.39:8888/mwapi/index" />
 </apis>
</service>
</rsd>

WLW的下一个请求是 /mwapi /index。这是对Blogger.getusersblogs的方法调用。该请求是:

.<?xml version="1.0" encoding="utf-8"?>..
<methodCall>.. <methodName>blogger.getUsersBlogs</methodName>.. 
<params>..  <param>..   <value>..
<string>ffffffabffffffce6dffffff93ffffffac29ffffffc9fffffff826ffffffdeffffffc9ffffffe43c0b763036ffffffa0fffffff3ffffffa963377716</string>..
</value>..
</param>..
<param>..
<value>..
<string>CommunityAdmin</string>..
</value>..
</param>..
<param>..
<value>..
<string>password</string>..
</value>..
</param>.. </params>..</methodCall>

原谅时期;这些是马车回报。我正在从网络跟踪中抓住它。

服务器的响应也在XML中:

.<?xml version="1.0" encoding="UTF-8"?>.<methodResponse><params><param><value>
<struct><member><name>blogid</name><value><int>1</int>
</value></member><member><name>url</name><value>
<string>http://10.0.1.39:8888/item/list/type/blog/user/1/bloguser/1</string>
</value></member><member><name>blogname</name><value>
<string>CommunityAdmin @ Cahoots!</string></value></member></struct></value>
</param></params></methodResponse>.

这对我来说是正确的。 Blogid是正确的,URL是正确的,并且博客名称是正确的。

然后,wlw重复原始的getusersblogs方法调用。它得到了相同的响应。

WLW然后显示:“与您的帐户建立了成功的连接,但是服务器报告说您目前没有活动的博客。请确保您使用此提供商的帐户在继续之前是最新的。”

WLW除了我在此处描述的内容之外,没有提出其他HTTP请求。

有什么线索我做错了什么?我确保有一个wlwmanifest.xml文件可用,实际上 任何 请求wlwmanifest.xml(eg,/this/is/not/it/wlwmanifest.xml)仍将返回正确的文件。

编辑:我意识到我没有从getusersblogs方法返回数组。当我更改它时,方法调用的HTTP响应是:

.<?xml version="1.0" encoding="UTF-8"?>.<methodResponse><params><param><value><array><data><value>
<struct><member><name>blogid</name><value><int>1</int></value></member>
<member><name>url</name><value>
<string>http://10.0.1.39:8888/item/list/type/blog/user/1/bloguser/1</string>
</value></member><member><name>blogname</name><value>
<string>CommunityAdmin @ Cahoots!</string></value></member></struct></value>
</data></array></value></param></params></methodResponse>.

这看起来与所描述的相同 http://msdn.microsoft.com/en-us/library/aa905665.aspx 作为样本响应。但是,WLW显示了一个错误 - “对象引用未设置为对象的实例。”同样,实际响应数据不包括周期 - 这就是网络监视器代表运输返回的方式。

我已经从测试安全带中进行了测试调用,并且在相同的响应中正常工作。而且,正如我所说,它正在与其他博客客户合作。帮助。

有帮助吗?

解决方案

WLW似乎对MWA实施非常挑剔。我没有正确地将其中一种方法名称资本化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top