Perché non è Windows Live Writer lavorare con il mio fornitore API MetaWeblog?
-
21-09-2019 - |
Domanda
sto sviluppando un sito Web che, tra le altre cose, fornisce blogging tramite API Metaweblog. Ho ottenuto l'API a lavorare abbastanza bene con diversi clienti di blog, ma Windows Live Writer mi sta uccidendo.
Ho fatto una traccia di rete per catturare il traffico effettivo avanti e indietro. Ecco i risultati:
WLW chiede il mio blog URL, il nome utente e la password. L'URL è / item / list / tipo / blog / user / 1 / bloguser / 1, e fornisco questo.
Vedo WLW fare una richiesta HTTP per tale URL. Si ottiene una risposta. Quella risposta comprende sia RSD e wlwmanifest tag link.
La prossima richiesta da WLW è per / mwapi / RSD / bloguser / 1, che è l'URL corretto.
La risposta è la risposta 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>
La prossima richiesta da WLW è quello di / mwapi / index. Questo è il metodo chiamata a blogger.getUsersBlogs. La richiesta è:
.<?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>
Perdona i periodi; quelli sono ritorni a capo. Sto prendendo questo da una traccia di rete.
La risposta dal server è anche in 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>.
Questo è corretto per me. Il BlogID è corretta, l'URL è corretto, e il nome del blog è corretto.
WLW poi ripete il metodo getUsersBlogs chiamata originale. Si ottiene una risposta identica.
WLW visualizza quindi, "una connessione è stato fatto per il tuo account tuttavia il server ha riferito che al momento non hanno un blog attivo. Assicurati che il tuo account con questo fornitore è in corso prima di procedere."
WLW ha fatto ulteriori richieste HTTP oltre a quelle che ho descritto qui.
Degli indizi di sorta quello che sto facendo di sbagliato? Ho assicurato che un file wlwmanifest.xml è disponibile, e in effetti qualsiasi richiesta di wlwmanifest.xml (ad esempio, /this/is/not/it/wlwmanifest.xml) sarà ancora tornare alla corretta file.
EDIT: ho capito che non tornavo un array da mio metodo getUsersBlogs. Quando ho cambiato che, la risposta HTTP dalla chiamata metodo era:
.<?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>.
Questo sembra identica a quella descritta in http://msdn.microsoft. com / it-it / library / aa905665.aspx come risposta del campione. Ma, WLW visualizzato un errore - "riferimento oggetto non impostato su un'istanza di un oggetto." Anche in questo caso, i dati di risposta attuale non include i periodi -. Questo è solo come Network Monitor rappresenta ritorni a capo
Ho fatto chiamate di prova da un test harness e che sta funzionando bene con le risposte identiche. E, come ho detto, si sta lavorando con altri client di blogging. Aiuto.
Soluzione
WLW, a quanto pare, è molto esigente circa l'attuazione MWA. Non ero capitalizzare uno dei nomi dei metodi in modo corretto.