2013-06-11 47 views
0

嗨我试图创建一个使用粗麻布的Web服务,但我似乎无法在实现最基本的示例中有任何运气。实现Hessian web服务

这是我的客户

<?php 
include_once './Hessian/HessianClient.php'; 
$testurl = 'http://localhost/HessianPHP/server.php'; 
$proxy = new HessianClient($testurl); 

    echo $proxy->div(2,5); 

?> 

这是我的服务器代码:

<?php 
include_once 'Hessian/HessianService.php'; 
$service = new HessianService(new Math()); 
$service->handle(); 
?> 

class Math { 
function add($n1,$n2) {   
    return $n1+$n2;  
    }  
    function sub($n1,$n2) {   
    return $n1-$n2;  
    }  
    function mul($n1,$n2) {   
    return $n1*$n2;  
    }  
    function div($n1,$n2) {   
    return $n1/$n2;  
    } 
} 

当我运行这段代码我得到这个错误:

Fatal error: Uncaught exception 'HessianFault' with message 'Code not recognized as a top element' in E:\Program Files\xampp\htdocs\HessianPHP\Hessian\Hessian2\Hessian2ServiceParser.php:38 Stack trace: #0 E:\Program Files\xampp\htdocs\HessianPHP\Hessian\HessianClient.php(74): Hessian2ServiceParser->parseTop() #1 E:\Program Files\xampp\htdocs\HessianPHP\Hessian\HessianClient.php(111): HessianClient->_hessianCall('div', Array) #2 E:\Program Files\xampp\htdocs\HessianPHP\client.php(5): HessianClient->_call('div', Array) #3 E:\Program Files\xampp\htdocs\HessianPHP\client.php(5): HessianClient->div(2, 5) #4 {main} thrown in E:\Program Files\xampp\htdocs\HessianPHP\Hessian\Hessian2\Hessian2ServiceParser.php on line 38

我在做什么这里错了吗?

+0

错误来自客户端还是服务器?这是来自Hessian网站的例子,还是有工作的例子可以尝试?如果你从某个地方得到了这个例子,那么提供这个URL是有帮助的,因此有几分钟的人可能会使用该来源来查看你是否错过了某些东西。 – halfer

回答

1

的index.php(客户端)

<?php 

    require_once 'HessianPHP/src/HessianClient.php'; 

    $testurl = 'http://path/to/mathservice.php' ; 
    $proxy = &new HessianClient($testurl); 

    try{ 

     echo '<pre>'; 
     print_r($proxy->add(1 , 3)); 
     echo '</pre>'; 

    } catch (Exception $ex){ 
     echo 'Exception: ' . $ex->getMessage(); 
    } 

服务器(mathservice.php)

<?php 

include_once 'HessianPHP/src/HessianService.php'; 
include_once 'Math.php'; 

$service = new HessianService(new Math()); 
$service->handle(); 

Math.php

<?php 

class Math{ 
    function add($n1,$n2) { 
     return $n1+$n2; 
    } 
    function sub($n1,$n2) { 
     return $n1-$n2; 
    } 
    function mul($n1,$n2) { 
     return $n1*$n2; 
    } 
    function div($n1,$n2) { 
     return $n1/$n2; 
    } 
} 

希望它能帮助秒。我认为你的代码中有一些语法错误(你写数学类没有php标签的方式很奇怪)。如果你得到空白屏幕,然后检查你的日志文件(error.log)。