2013-05-16 10 views
1

나는 이것을 2 일 동안 알아 내려고 노력했다. 거기에 모든 JSONRPC 라이브러리를 시도했지만, 그들 중 누구도 일을하지 않았고 그래서 내가 직접 그렇게했다.JQuery Ajax에서 JSONRPC 프록시

$.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))); 

이 - PHP로 작성 - 및 POST 요청 JSON

나는 간단한 AJAX의 프록시로 전화를 걸 서버에서 다음과 같은 오류 메시지가 나타납니다.

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

나는 아이디어가 부족합니다. 누구든지이 문제를 해결하거나 적어도 올바른 방향으로 나를 가리킬 수 있습니까?

답변

0

이것이 결국 작동하지 않게되었습니다 (PHP는 저에게 쓴 것이 아닙니다). AJAX는 GET을 사용해야했던 것 외에는 괜찮았다.

AJAX 프록시 :

<?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); 
?>