Search code examples
phpapiservicemediawikimediawiki-api

PHP connecting to MediaWiki API and retrieve data


I noticed there was a question somewhat similar to mine, only with c#:link text. Let me explain: I'm very new to the whole web-services implementation and so I'm experiencing some difficulty understanding (especially due to the vague MediaWiki API manual).

I want to retrieve the entire page as a string in PHP (XML file) and then process it in PHP (I'm pretty sure there are other more sophisticated ways to parse XML files but whatever): Main Page wikipedia.

I tried doing $fp = fopen($url,'r');. It outputs: HTTP request failed! HTTP/1.0 400 Bad Request. The API does not require a key to connect to it.

Can you describe in detail how to connect to the API and get the page as a string?

EDIT: The URL is $url='http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main Page';. I simply want to read the entire content of the file into a string to use it.


Solution

  • Connecting to that API is as simple as retrieving the file,

    fopen

    $url = 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page';
    $fp = fopen($url, 'r');
    while (!feof($fp)) {
        $c .= fread($fp, 8192);
    }
    echo $c;
    

    file_get_contents

    $url = 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page';
    $c = file_get_contents($url);
    echo $c;
    

    The above two can only be used if your server has the fopen wrappers enabled.

    Otherwise if your server has cURL installed you can use that,

    $url = 'http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main%20Page';
    $ch = curl_init($url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $c = curl_exec($ch);
    echo $c;