Hallo Leute,
ich wollte mich mal erkundigen, ob sich hier jemand mit MediaWiki auskennt?
Ich möchte über die Api.php den HTTP Post "action=upload"(ab Version 1.16) verwenden, doch bei mir erscheint der Fehler:
[XML]<?xml version="1.0"?><api><error code="unknownerror" info="Unknown error: ``mustbeloggedin''" /></api>[/XML]
Also ich nutze das Jakarta Commons HTTPClient Package (HttpComponents - HttpComponents Overview)
Im MediaWiki Api.php seht folgendes drin:
Habe auch dieses Tutorial versucht:API:Edit - Uploading files - MediaWiki
---> Aber bekomme es trotzdem nicht auf die Reihe.
Den POST "action=login" bekomme ich feherfrei hin, aber der Upload will noch nicht.
HIER MEIN JAVA-CODE:
Ich wäre für alle relevanten Hifestellungen dankbar!
Viele Grüße,
chaosjava
ich wollte mich mal erkundigen, ob sich hier jemand mit MediaWiki auskennt?
Ich möchte über die Api.php den HTTP Post "action=upload"(ab Version 1.16) verwenden, doch bei mir erscheint der Fehler:
[XML]<?xml version="1.0"?><api><error code="unknownerror" info="Unknown error: ``mustbeloggedin''" /></api>[/XML]
Also ich nutze das Jakarta Commons HTTPClient Package (HttpComponents - HttpComponents Overview)
Im MediaWiki Api.php seht folgendes drin:
* action=upload *
Upload a file, or get the status of pending uploads. Several methods are available:
* Upload file contents directly, using the "file" parameter
* Have the MediaWiki server fetch a file from a URL, using the "url" parameter
* Complete an earlier upload that failed due to warnings, using the "sessionkey" parameter
Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when
sending the "file". Note also that queries using session keys must be
done in the same login session as the query that originally returned the key (i.e. do not
log out and then log back in). Also you must get and send an edit token before doing any upload stuff.
This module requires read rights.
This module requires write rights.
This module only accepts POST requests.
Parameters:
filename - Target filename
comment - Upload comment. Also used as the initial page text for new files if "text" is not specified
Default:
text - Initial page text for new files
token - Edit token. You can get one of these through prop=info
watch - Watch the page
ignorewarnings - Ignore any warnings
file - File contents
url - Url to fetch the file from
sessionkey - Session key returned by a previous upload that failed due to warnings
Examples:
Upload from a URL:
api.php?action=upload&filename=Wiki.png&url=http%3A//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png
Complete an upload that failed due to warnings:
api.php?action=upload&filename=Wiki.png&sessionkey=sessionkey&ignorewarnings=1
Habe auch dieses Tutorial versucht:API:Edit - Uploading files - MediaWiki
---> Aber bekomme es trotzdem nicht auf die Reihe.
Den POST "action=login" bekomme ich feherfrei hin, aber der Upload will noch nicht.
HIER MEIN JAVA-CODE:
Java:
import java.io.File;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
public class PostExample {
@SuppressWarnings("deprecation")
public static void main( String[] args ) {
String url = "http://localhost/mediawiki/api.php?wikidb2_session=bvmkhka800njr96vu9s4p4a273";
// String login= JOptionPane.showInputDialog("Geben Sie Ihren Benutzernamen ein:");
// String password= JOptionPane.showInputDialog("Geben Sie Ihr Password ein:");
try {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod( url );
MultipartPostMethod test = new MultipartPostMethod(url);
NameValuePair[] data = {
//new NameValuePair("action", "login"),
//new NameValuePair("lgname", "Useraaa"),
//new NameValuePair("lgpassword", "pass"),
//new NameValuePair("lgdomain",""),
//new NameValuePair("wikidb2_sessionid", "r13gkdfk5u8chjfim4spmrh101"),
//new NameValuePair("lgtoken","29c72efbb6fe9f24600ccbe69ca2a2ab"),
//new NameValuePair("filename", "2.jpg"),
//new NameValuePair("url", "http://www.level-east.ch/uploads/media/IT_Software_01.png"),
//new NameValuePair("token", "+\\"),
//new NameValuePair("format", "xml")
};
//Hier ist Upload-Versuch
File f1 = new File("3.jpg");
System.out.println("File1 Length = " + f1.length());
test.addParameter("action", "upload");
test.addParameter("file", f1);
test.addParameter("filename", "3.jpg");
test.addParameter("token", "+\\");
test.addParameter("format","xml");
int statusCode1 = client.executeMethod(test);
System.out.println("statusLine>>>" + test.getStatusLine());
String contents2 = test.getResponseBodyAsString();
test.releaseConnection();
System.out.println( contents2 );
//Das ist die Post-Methode für den Login
//method.addParameters(data);
//NICHT RELEVANT
// Execute the POST method
// int statusCode = client.executeMethod( method );
//if( statusCode != -1 ) {
// String contents = method.getResponseBodyAsString();
// FileWriter fw = new FileWriter ("results.xml");
// fw.write(contents);
//method.releaseConnection();
// System.out.println( contents );
//fw.close();
// }
}
catch( Exception e ) {
e.printStackTrace();
}
}
}
Ich wäre für alle relevanten Hifestellungen dankbar!
Viele Grüße,
chaosjava