Questo può essere un problema pateticamente semplice, ma io non riesco a formattare il messaggio di WebRequest/risposta per ottenere i dati dal Wikipedia API. Ho pubblicato il mio codice qui sotto se qualcuno può aiutarmi a vedere il mio problema.WebRequest per connettersi al API Wikipedia
risposta
Si potrebbe desiderare di provare una richiesta GET prima perché è un po 'più semplice (si avrà solo bisogno di POST per il login wikipedia). Ad esempio, provare a simulare questa richiesta:
http://en.wikipedia.org/w/api.php?action=query&prop=images&titles=Main%20Page
Ecco il codice:
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://en.wikipedia.org/w/api.php?action=query&prop=images&titles=Main%20Page");
using (HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse())
{
string ResponseText;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
ResponseText = reader.ReadToEnd();
}
}
Edit: L'altro problema che stava sperimentando sulla richiesta POST è stato, The exception is : The remote server returned an error: (417) Expectation failed.
Si può essere risolto impostando :
(Questo da: HTTP POST Returns Error: 417 "Expectation Failed.")
Grazie Keltex, posso ottenere il Get a lavorare abbastanza facilmente. utilizzando: WebRequest req = WebRequest.Create (indirizzo + "?" + Dati) come WebRequest; utilizzando (WebResponse resp = req.GetResponse() come risposta Web) { Readme di streamReader = new StreamReader (resp.GetResponseStream()); divWikiData.InnerText = readme.ReadToEnd(); } Questa richiesta Inserisci mi ha caratteristiche sgrassanti ancora - e ho bisogno Post per alcune delle azioni della API consente .. – NickJ
Nick, può per favore farci sapere che tipo di problema vostra richiesta POST sta visualizzando. Qual è l'eccezione che ottieni? Come si sta comportando? –
L'eccezione è: l'eccezione è: il server remoto ha restituito un errore: (417) Expectation non riuscita. – NickJ
Sembra che tu stia spingendo i dati di input su HTTP POST, ma sembra che tu debba utilizzare HTTP GET.
Dalla documentazione API MediaWiki:
The API takes its input through parameters in the query string. Every module (and every action=query submodule) has its own set of parameters, which is listed in the documentation and in action=help, and can be retrieved through action=paraminfo. http://www.mediawiki.org/wiki/API:Data_formats
Sono attualmente nelle fasi finali di attuazione di un'API C# MediaWiki che consente la semplice script della maggior parte delle azioni di visualizzazione e la modifica di MediaWiki.
L'API principale è qui: http://o2platform.googlecode.com/svn/trunk/O2%20-%20All%20Active%20Projects/O2_XRules_Database/_Rules/APIs/OwaspAPI.cs e qui è un esempio di API in uso:
var wiki = new O2MediaWikiAPI("http://www.o2platform.com/api.php");
wiki.login(userName, password);
var page = "Test"; // "Main_Page";
wiki.editPage(page,"Test content2");
var rawWikiText = wiki.raw(page);
var htmlText = wiki.html(page);
return rawWikiText.line().line() + htmlText;
Il collegamento è rotto. Hai un link aggiornato? – Gabe
Mi dispiace, ho spostato l'API di recente in una posizione più centrale. Potete trovare il file qui: http://o2platform.googlecode.com/svn/trunk/O2_Scripts/APIs/MediaWiki/OwaspWikiAPI.cs questo è l'API principale utilizzato su quel file http://o2platform.googlecode.com/svn/trunk/O2_Scripts/APIs/MediaWiki/O2MediaWikiAPI.cs e questo è uno strumento GUI costruito sulla cima di queste API http://o2platform.googlecode.com/svn/trunk/ O2_Scripts/Tools/MediaWikiEditor.cs.o2 Se vuoi provare questi script, fanno parte della piattaforma O2 che puoi ottenere da http://o2platform.com/ –
A prima vista sei il codice sembra buono. Come si presenta in modo specifico il problema? Qual è l'eccezione? –
L'eccezione è: Il server remoto ha restituito un errore: (417) Expectation non riuscita. – NickJ
@NickJ: Prova il mio codice qui sotto. Ha funzionato. – Keltex