[Gelöst] Poco: Mit HTTP POST Request übergebene Daten landen nicht in $_POST, sondern $_GET



  • Hallo zusammen,

    === Lösung ===
    Nach (ich würde fast sagen stundenlangem) probieren und googeln habe ich es nun hinbekommen, dass es für mich funktioniert:

    Poco::Net::HTTPClientSession session { "www.example.com" };
    Poco::Net::HTTPRequest req { Poco::Net::HTTPRequest::HTTP_POST, "/foo.php" };   
    req.setContentType("application/x-www-form-urlencoded");
    std::string body { "data=test" };
    req.setContentLength(body.length());
    
    session.sendRequest(req) << body;
    
    Poco::Net::HTTPResponse response;
    std::cout << session.receiveResponse(response).rdbuf() << std::endl;
    
    <?php
        echo "POST\n";
        print_r($_POST);
    ?>
    
    POST
    Array
    (
        [data] => test
    )
    

    Note to Self: Keine unnötigen Threads mehr eröffnen, nur weil es mal auf kurze Sicht nicht klappt. Nicht aufgeben, und weitersuchen!

    ich habe noch ein anderes Problem, welches ich mir nicht erklären kann. Ich habe auf folgende Weise ein HTTP_POST Request "gemacht":

    Poco::Net::HTTPClientSession session { "<domain>" };
    Poco::URI uri;
    uri.setPath("/test.php");
    uri.addQueryParameter("data", "test");
    
    Poco::Net::HTTPRequest req { Poco::Net::HTTPRequest::HTTP_POST, uri.toString() };
    Poco::Net::HTTPResponse response;
    
    std::cout << "Using method: " << req.getMethod() << "\n\n";
    session.sendRequest(req);
    std::cout << session.receiveResponse(response).rdbuf() << '\n';
    
    <?php
        echo "POST\n";
        print_r($_POST);
        echo "GET\n";
        print_r($_GET);
    ?>
    

    mein Output:

    Using Method: POST
    
    POST
    Array
    (
    )
    GET
    Array
    (
        [data] => test
    )
    

    Ich denke es ist klar, was mich daran verwirrt: ich hätte erwartet, dass mein Output so aussieht:

    Using Method: POST
    
    POST
    Array
    (
        [data] => test
    )
    GET
    Array
    ( 
    )
    

    Edit: Aha. Scheinbar tut 'addQueryParameter()' nicht das, was ich dachte, dass es tut:

    /test.php?data=test
    

    Langsam wirds wirklich peinlich.....

    LG
    HarteWare



  • Hab keine Ahnung von poco, aber es gibt Programme und auch einige addons für firefox mit denen du POST requests testen kannst. Von curl bis weissnichtwas.

    Dann weisst du, ob du einfach nur poco falsch eingesetzt hast.


  • Mod

    addQueryParameter klingt für mich als würde damit ein Query Parameter hinzugefügt werden. Was GET entspricht.


Anmelden zum Antworten