tunage Posted July 9, 2015 Share Posted July 9, 2015 I have a RPC server class that accepts JSON data from an unspecified given 3rd party using cURL. I can see the data hit my class, I can store a var_dump into a for what appears to be the server request, but the output looks like receiving webserver info with references to the inbound object.But I do not see my JSON data 'foo:bar' <?php class jsonRPCServer { public static function handle($object) { if ( $_SERVER['REQUEST_METHOD'] != 'POST' || empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/json' ) { return false; } $request = json_decode(file_get_contents('php://input'),true); $args=func_get_args(); ob_start(); var_dump($_SERVER); $result2 = ob_get_clean(); $file = 'stripedump.txt'; $current = file_get_contents($file); $current .= $result2; file_put_contents($file, $current); try { if ($result = @call_user_func_array(array($object,$request['method']),$request['params'])) { $response = array ( 'id' => $request['id'], 'result' => $result, 'error' => NULL ); } else { $response = array ( 'id' => $request['id'], 'result' => NULL, 'error' => 'unknown method or incorrect parameters' ); } } catch (Exception $e) { $response = array ( 'id' => $request['id'], 'result' => NULL, 'error' => $e->getMessage() ); } if (!empty($request['id'])) { // notifications don't want response header('content-type: text/javascript'); echo json_encode($response); } return true; } } ?> <?php require_once 'example.php'; require_once 'jsonRPCServer.php'; $myExample = new example(); jsonRPCServer::handle($myExample) or print 'no request'; echo '<b>Attempt to perform basic operations</b><br />'."\n"; try { echo 'Your name is <i>'.$myExample->giveMeSomeData('name').'</i><br />'."\n"; $myExample->changeYourState('I am using this funnction from the local environement'); echo 'Your status request has been accepted<br />'."\n"; } catch (Exception $e) { echo nl2br($e->getMessage()).'<br />'."\n"; } var_dump($myExample); echo '<br /><b>Attempt to store strategic data</b><br />'."\n"; try { $myExample->writeSomething('bite me'); echo 'Strategic data succefully stored'; } catch (Exception $e) { echo nl2br($e->getMessage()); } ?> output from remote cURL client: gentoo-mini htdocs # curl -X POST -H "Content-Type: application/json" -d "{foo:bar}" http://nyctelecomm.com/hooker/ <b>Attempt to perform basic operations</b><br /> Your name is <i>Bubba</i><br /> Your status request has been accepted<br /> object(example)#1 (1) { ["someData":"example":private]=> array(2) { ["name"]=> string(5) "Bubba" ["attr"]=> string(17) "Some me Attribute" } } <br /><b>Attempt to store strategic data</b><br /> Strategic data succefully stored stored var_dump($_SERVER) data: array(29) { ["HTTP_HOST"]=> string(15) "nyccomm.com" ["HTTP_USER_AGENT"]=> string(11) "curl/7.42.1" ["HTTP_ACCEPT"]=> string(3) "*/*" ["CONTENT_TYPE"]=> string(16) "application/json" ["CONTENT_LENGTH"]=> string(1) "9" ["PATH"]=> string(29) "/sbin:/bin:/usr/sbin:/usr/bin" ["LD_LIBRARY_PATH"]=> string(29) "/usr/local/lib:/usr/local/lib" ["SERVER_SIGNATURE"]=> string(0) "" ["SERVER_SOFTWARE"]=> string(34) "Apache/2.4.12 (FreeBSD) PHP/5.6.10" ["SERVER_NAME"]=> string(15) "nyccomm.com" ["SERVER_ADDR"]=> string(13) "108.61.175.20" ["SERVER_PORT"]=> string(2) "80" ["REMOTE_ADDR"]=> string(12) "67.82.49.236" ["DOCUMENT_ROOT"]=> string(21) "/home/www" ["REQUEST_SCHEME"]=> string(4) "http" ["CONTEXT_PREFIX"]=> string(0) "" ["CONTEXT_DOCUMENT_ROOT"]=> string(21) "/home/www" ["SERVER_ADMIN"]=> string(19) "[email protected]" ["SCRIPT_FILENAME"]=> string(38) "/home/www/hooker/index.php" ["REMOTE_PORT"]=> string(5) "52841" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string( "HTTP/1.1" ["REQUEST_METHOD"]=> string(4) "POST" ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string( "/hooker/" ["SCRIPT_NAME"]=> string(17) "/hooker/index.php" ["PHP_SELF"]=> string(17) "/hooker/index.php" ["REQUEST_TIME_FLOAT"]=> float(1436429001.683) ["REQUEST_TIME"]=> int(1436429001) } string(4) "name" tcpdump: 00:29:06.659025 IP 192.168.0.55.52841 > 108.61.175.20.vultr.com.http: Flags [P.], seq 1:148, ack 1, win 115, options [nop,nop,TS val 2017270703 ecr 2483478707], length 147 E....A@[email protected]=...i.P...g.I.]...s....... x=......POST /hooker/ HTTP/1.1 Host: nyctelecomm.com User-Agent: curl/7.42.1 Accept: */* Content-Type: application/json Content-Length: 9 {foo:bar} 00:29:06.746198 IP 108.61.175.20.vultr.com.http > 192.168.0.55.52841: Flags [P.], seq 1:561, ack 148, win 1033, options [nop,nop,TS val 2483478793 ecr 2017270703], length 560 [email protected]=.....7.P.i.I.]....... :...... ... x=..HTTP/1.1 200 OK Date: Thu, 09 Jul 2015 08:03:21 GMT Server: Apache/2.4.12 (FreeBSD) PHP/5.6.10 X-Powered-By: PHP/5.6.10 Content-Length: 373 Content-Type: text/html; charset=UTF-8 <b>Attempt to perform basic operations</b><br /> Your name is <i>Bubba</i><br /> Your status request has been accepted<br /> object(example)#1 (1) { ["someData":"example":private]=> array(2) { ["name"]=> string(5) "Bubba" ["attr"]=> string(17) "Some me Attribute" } } <br /><b>Attempt to store strategic data</b><br /> Strategic data succefully stored 00:29:06.746271 IP 192.168.0.55.52841 > 108.61.175.20.vultr.com.http: Flags [.], ack 561, win 123, options [nop,nop,TS val 2017270790 ecr 2483478793], length 0 E..4.B@[email protected]=...i.P.....I.....{.W..... How do I access the JSON data from my inbound RPC object? (specifically 'foo:bar') Link to comment https://forums.phpfreaks.com/topic/297238-how-to-i-get-json-object-data-from-inbound-rpc/ Share on other sites More sharing options...
iarp Posted July 13, 2015 Share Posted July 13, 2015 Try var_dump on $_GET or $_POST Link to comment https://forums.phpfreaks.com/topic/297238-how-to-i-get-json-object-data-from-inbound-rpc/#findComment-1516178 Share on other sites More sharing options...
scootstah Posted July 13, 2015 Share Posted July 13, 2015 The JSON that you are inputting is not valid JSON, so json_decode() is probably failing. It should be: curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar"}' http://nyctelecomm.com/hooker/ Link to comment https://forums.phpfreaks.com/topic/297238-how-to-i-get-json-object-data-from-inbound-rpc/#findComment-1516180 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.