Por que o Windows Live Writer não está trabalhando com meu provedor de API do Metaweblog?

StackOverflow https://stackoverflow.com/questions/1786156

  •  21-09-2019
  •  | 
  •  

Pergunta

Estou desenvolvendo um site que, entre outras coisas, fornece blogs via API do Metaweblog. Eu consegui a API funcionando muito bem com vários clientes de blog, mas o Windows Live Writer está me matando.

Eu fiz um rastreamento de rede para capturar o tráfego real e para trás. Aqui estão os resultados:

O WLW solicita meu URL do blog, nome de usuário e senha. O URL é/item/lista/tipo/blog/user/1/blogUser/1, e eu forneço isso.

Vejo o WLW fazer uma solicitação HTTP para esse URL. Recebe uma resposta. Essa resposta inclui tags de link RSD e WLWManifest.

A próxima solicitação da WLW é para/mwapi/rsd/bloguser/1, que é o URL correto.

A resposta é a resposta RSD do MetaWeblog:

<?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>

A próxima solicitação do WLW é para /mwapi /índice. Este é o método chamado para o blogger.getUsersBlogs. O pedido é:

.<?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>

Perdoar os períodos; Esses são retornos de carruagem. Estou pegando isso de um rastreamento de rede.

A resposta do servidor também está no 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>.

Isso me parece correto. O blogID está correto, o URL está correto e o nome do blog está correto.

O WLW repete a chamada original do método GetUsersBlogs. Recebe uma resposta idêntica.

O WLW exibe: "Uma conexão bem -sucedida foi feita à sua conta, no entanto, o servidor relatou que você não possui um blog ativo. Verifique se sua conta com este provedor está atual antes de prosseguir".

A WLW não fez mais solicitações HTTP além das que descrevi aqui.

Alguma pista de tudo o que estou fazendo de errado? Eu assegurei que um arquivo wlwmanifest.xml estivesse disponível e de fato algum A solicitação para wlwmanifest.xml (por exemplo, /this/is/not/it/wlwmanifest.xml) ainda retornará o arquivo correto.

EDIT: Percebi que não estava retornando uma matriz do meu método getUsersBlogs. Quando mudei isso, a resposta HTTP da chamada do método foi:

.<?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>.

Isso parece idêntico ao que é descrito em http://msdn.microsoft.com/en-us/library/aa905665.aspx como uma resposta de amostra. Mas, o WLW exibiu um erro - "Referência de objeto não definida como uma instância de um objeto". Novamente, os dados de resposta reais não incluem os períodos - é assim que o monitor de rede representa as devoluções de transporte.

Fiz chamadas de teste de um chicote de teste e está funcionando bem com respostas idênticas. E, como eu disse, está trabalhando com outros clientes de blogs. Ajuda.

Foi útil?

Solução

WLW, ao que parece, é muito exigente com a implementação da MWA. Eu não estava capitalizando um dos nomes de métodos corretamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top