Jump to content

How to I get JSON object data from inbound RPC?


tunage

Recommended Posts

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')

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.