[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.
-
addQueryParameter klingt für mich als würde damit ein Query Parameter hinzugefügt werden. Was GET entspricht.