php server:
<?php
//http://php.net/manual/en/class.soapserver.php
include 'entitys.php';
require_once 'Zend/Json/Server.php';
$server = new Zend_Json_Server();
$server->setClass('Calculator');
if ('GET' == $_SERVER['REQUEST_METHOD']) {
$server->setTarget('/json-rpc.php')->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
$smd = $server->getServiceMap();
// Set Dojo compatibility:
$smd->setDojoCompatible(true);
header('Content-Type: application/json');
echo $smd;
return;
}
$server->handle();
?>
<pre name="code" class="php"><?php
class Student{
public $id;
public $name;
public $age;
}
/**
* Calculator - sample class to expose via JSON-RPC
*/
class Calculator
{
/**
* Return sum of two variables
*
* @param int $x
* @param int $y
* @return int
*/
public function add($x, $y)
{
return $x + $y;
}
/**
* Return difference of two variables
*
* @param int $x
* @param int $y
* @return int
*/
public function subtract($x, $y)
{
return $x - $y;
}
/**
* Return product of two variables
*
* @param int $x
* @param int $y
* @return int
*/
public function multiply($x, $y)
{
return $x * $y;
}
/**
* Return the division of two variables
*
* @param int $x
* @param int $y
* @return float
*/
public function divide($x, $y)
{
return $x / $y;
}
public function fuck($x, $y)
{
$m=$x +$y;
return 'fuck 日本'.$m;
}
public function getstudent($student)
{
$student=new Student();
$student->id=110;
$student->name='php';
$student->age=21;
return $student;
}
}
?>
<?php
include ("lib/client/JsonRpcClient.php");
include ("lib/client/AuthenticatedJsonRpcClient.php");
//https://github.com/Pozo/json-rpc-php
$client = new JsonRpcClient('http://localhost/json_server/server.php');
echo '<pre>';
var_dump($client->add(22, 9));
echo '</pre>';
echo '<pre>';
var_dump($client->fuck(21,32));
echo '</pre>';
?>
package com.jiepu.server;
import cz.eman.jsonrpc.server.tcp.TcpJsonMultiServer;
public class WebService implements IMyService {
public Integer add(Integer a, Integer b) {
return a + b;
}
public String hello(String data) {
return "hello,你好" + data;
}
public Student echo(Student b) throws Exception {
b.setName("newname");
b.setAge(12);
return b;
}
public static void main(String[] args) throws Exception {
// new TcpJsonSingleServer(new WebService(), 20000).start();
new TcpJsonMultiServer(new WebService(), 20000).start();
}
}
package com.jiepu.server;
public interface IMyService {
public Integer add(Integer a, Integer b) throws Exception ;
public String hello(String data) throws Exception;
public Student echo(Student b) throws Exception;
}
package com.jiepu.server;
public interface IMyService {
public Integer add(Integer a, Integer b) throws Exception ;
public String hello(String data) throws Exception;
public Student echo(Student b) throws Exception;
}
package com.jiepu.client;
import java.net.InetSocketAddress;
import com.jiepu.server.IMyService;
import com.jiepu.server.Student;
import cz.eman.jsonrpc.client.AbstractClientProxy;
import cz.eman.jsonrpc.client.ClientProvider;
import cz.eman.jsonrpc.client.TcpJsonClient;
public class WebServiceClientProxy extends AbstractClientProxy<IMyService> implements IMyService {
public WebServiceClientProxy(ClientProvider clientProvider) {
super(IMyService.class, clientProvider);
}
public Integer add(Integer a, Integer b) throws Exception {
return (Integer) super.callMethod("add", new Object[] { a, b });
}
public String hello(String data) throws Exception{
return (String) super.callMethod("hello", new Object[] { data});
}
public Student echo(Student b) throws Exception {
return (Student) super.callMethod("echo", b);
}
public static void main(String[] args) throws Exception {
WebServiceClientProxy proxy = new WebServiceClientProxy(new TcpJsonClient(new InetSocketAddress("localhost", 20000)));
System.out.println(proxy.add(19, 12));
System.out.println(proxy.hello("fuck"));
System.out.println(proxy.echo(new Student()));
}
}
package com.jiepu.client;
import java.net.URL;
import com.jiepu.server.Student;
import cz.eman.jsonrpc.client.AbstractClientProxy;
import cz.eman.jsonrpc.client.HttpJsonClient;
//http://java-json-rpc.sourceforge.net/
public class TestHttp {
public static void main(String[] args) throws Exception {
HttpJsonClient client=new HttpJsonClient(new URL("http://10.0.0.107/json_server/index.php"));
AbstractClientProxy proxy;
proxy = new AbstractClientProxy(null, client, false);
System.out.println(proxy.callNativeMethod("add", 12, 14));
System.out.println(proxy.callNativeMethod("fuck", 32, 4));
System.out.println(proxy.callNativeMethod("multiply", 14,12));
String data=proxy.callNativeMethod("getstudent", new Student(1,"name",123));
System.out.println(data);
}
}
package com.jiepu.client;
import java.net.InetSocketAddress;
import java.net.Socket;
import cz.eman.jsonrpc.client.AbstractClientProxy;
import cz.eman.jsonrpc.client.TcpJsonClient;
//http://java-json-rpc.sourceforge.net/
//http://www.json-rpc.org/wiki/implementations
public class Test {
public static void main(String[] args) throws Exception {
// HttpJsonClient client=new HttpJsonClient(new URL("http://localhost/json-rpc-testserver/jsonrpc/test1"));
AbstractClientProxy proxy;
TcpJsonClient client = new TcpJsonClient(new InetSocketAddress(
"localhost", 20000));
System.out.println(client.toString());
proxy = new AbstractClientProxy(null, client, false);
proxy.callNativeMethod("add", 12, 14);
proxy.callNativeMethod("hello", "呵呵zz");
}
}
http://pan.baidu.com/s/1bnde5bT