2013-05-16 1 views
1

Я пытался понять это в течение 2 дней. Я пробовал каждую библиотеку JSONRPC, но никто из них не работал, поэтому я прибегал к этому самому.JQuery Ajax to JSONRPC Proxy

Я делаю простой AJAX вызов прокси - написанный на PHP - и POST запрос JSON:

$.ajax({ 
    url: "includes/buoybay_proxy.php", 
    dataType: "json", 
    data: {"method": "Test", "params": ["113f8ba8*****************9b5f27e0a0bb"], "id": 1}, 
    timeout: 5000, 
    type: 'POST', 
    success: function(data, status, XHR){ 
     console.log("!!: " + JSON.stringify(data)); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
    console.log("??: ", textStatus, errorThrown); 
    } 
}); 

прокси - написано в PHP - работает следующим образом:

$con = json_encode($_POST); 
$cparams = array(
    'http' => array(
     'content' => $con, 
     'method' => 'POST', 
     'ignore_errors' => true, 
     'header' => 'POST /studs/**************/server.php HTTP/1.0\r\n 
        User-Agent: "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36\r\n" 
        Host: my.wamp.server:80\r\n 
        Accept-Charset: UTF-8,ISO-8859-1,US-ASCII\r\n 
        Content-Type: application/json\r\n 
        Content-Length: ' . strlen($con) . '\r\n' 
    ) 
); 
//ChromePhp::log($cparams); 
$context = stream_context_create($cparams); 
$fp = fopen('http://mw.buoybay.org:80/studs/**************/server.php', 'r', false, $context); 
//ChromePhp::log(stream_get_contents(($fp))); 
echo json_encode(stream_get_contents(($fp))); 

Это приводит к следующему сообщению об ошибке с сервера:

{"id": null, "error": { "faultCode": 15, "faultString": "Invalid request payload Invalid data (empty string?)" }, "result": null}  

Я просто из идей; может ли кто-нибудь исправить это или по крайней мере указать мне в правильном направлении?

ответ

0

Это то, что закончило работать (PHP не написан мной); AJAX был прекрасен, за исключением того, что я должен был использовать GET.

AJAX Proxy:

<?php 
require_once('jsonRPCClient.php'); 
include('ChromePhp.php'); 
$url='http://mw.buoybay.org/studs/studs_cdrh/jsonrpc_cdrh/server.php'; 
$constellation="CBIBS"; 
$apikey="113f8ba8f286ad********************f27e0a0bb"; 
$client =new jsonRPCClient($url,true); 

$method=$_GET['method'];//"RetrieveCurrentReadings"; 
$getParams = $_GET['params']; 
$params=explode(',', $getParams); //array('CBIBS','AN','113f8ba8f28******************279b5f27e0a0bb'); 
$result = $client->__call($method, $params); 

// return the results 
echo json_encode($result); 
?>