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) "admin@ex-mailer.com"
      ["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@.@.f....7l=...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
E..dm.@.5...l=.....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@.@.gP...7l=...i.P.....I.....{.W.....

 
 
 
 
How do I access the JSON data from my inbound RPC object? (specifically 'foo:bar')

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.