Website laden mit POST/GET-Parameter und Cookies

Julian-w

Mitglied
Hallo,
ich habe folgendes Problem:
Ich möchte in Java (plattformunabhängig ;)) den Quell-Text einer Website speichern (konkret handelt es sich um ein JSON-Objekt).

Jedoch muss ich an die "php-Datei" Parameter mittels GET (also an die URL anhängen, was kein Problem ist. z.B. xxx.php?eig1=wert1) und POST übergeben. Zustzlich müssen noch Cookies (wegen des Logins) verarbeitet werden.

Hab es schon mit den Apache Commons versucht, hab aber leider nichts brauchbares hinbekommen (ist glaub ich auch etwas overkill).

Wollte mal Fragen, ob einer weiß, wie ich das Problem am besten lösen kann. Ich konnte leider keine passende Bibliothek finden. Die Bibliothek müsste Cookies verarbeiten können und Parameter mittels GET/POST übergeben können. Das JSON-Objekt zu verarbeiten, ist kein Problem.

Hoffe, ihr könnte mir weiterhilfen. Wäre über jeden Anwort dankbar.

MfG
Julian
 
Hi Julian,

also ich würde für so etwas auch den Apache HttpClient nehmen.
Was hat denn nicht funktioniert?

Gruß
joschi
 
Nunja, ich weiß nicht, wie ich die POST-Daten noch übergeben soll. Hier mal mein Code:

Code:
public class server {

    private String _address;
    private HttpClient _server;
    private Cookie[] cookies;

    /**
     * Erstellt ein neues Objekt vom Typ Server
     * @param address
     * Addresse des Servers in Form http://...
     */
    public server(String address) {
        _address = address;
        _server = new HttpClient();
    }

    public String GetJSON(String API_file, String[][] Parameter_GET, String[][] Parameter_POST)
    {
        try {
            // vorhandene Cookies laden
            HttpState initialState = new HttpState();
            initialState.addCookies(cookies);

            // vorhanden Cookies hinzufügen
            _server.setState(initialState);
            _server.getParams().setCookiePolicy(CookiePolicy.RFC_2109);

            // URL mit Paramter erstellen
            String parameter = "";
            if(Parameter_GET.length > 0)
            {
                parameter ="?";
                for(int i = 0; i < Parameter_GET.length; i++)
                {
                    parameter += Parameter_GET[i][0] + "=" + Parameter_GET[i][1] + "&";
                }
                parameter = parameter.substring(0, parameter.length() - 1);
            }
            GetMethod httpget = new GetMethod(_address + "/api/" + API_file + parameter);

            // Aufruf durchführen
            try {
                _server.executeMethod(httpget);
            } catch (IOException ex) {
                return null;
            }

            // Cookies speichern
            cookies = _server.getState().getCookies();

            // Ergebniss holen
            String Result = httpget.getResponseBodyAsString();

            // Verbindung lösen
            httpget.releaseConnection();

            return Result;

        } catch (IOException ex) {
            return null;
        }
    }
}
 
Hi Julian,

warum willst du denn GET und POST mischen?

Entweder Du machst ein GET, dann landen alle Parameter in der URL, oder du machst ein POST dann werden die im Request Body mitgegeben.

Keine Ahnung, was passiert, wenn Du ein PostMethod() Objekt benutzt und noch Parameter in der URL übergibst.

Im Code würde das dann so ähnlich aussehen:

Java:
PostMethod method = new PostMethod("http://www.irgendwas.de/bla.php?eig1=wert1");
    method.addParameter("eig2", "wert2");

Wie gesagt, hab ich keinen Ahnung, was passiert.

Gruß
joschi
 
Warum ich GET und POST mische? Es gibt z.B. eine Datei, die heißt "add_comment.php". Via GET wird hier die ID, wo das Kommentar landen soll, übergeben, also z.B. "add_comment.php?id=13".
Da die Kommentare sehr, sehr lang sein können, übergebe ich dies einfach über POST.

Werde deine Methode mal probieren.
 
Nunja, ich hab den Skript nicht geschrieben und der war nunmal so get worden.

Hab jetzt keine Lust, den komplett umzuschreiben ;)

Solange es so funktioniert, kann es erstmal so bleiben: Never touch a running system
 

Neue Beiträge

Zurück