Hprose for PHP 服务器(二)

[b][size=xx-large]服务器开关[/size][/b]

[b][size=x-large]隐藏发布列表[/size][/b]

发布列表的作用相当于Web Service的WSDL,与WSDL不同的是,Hprose的发布列表仅包含方法名,而不包含方法参数列表,返回结果类型,调用接口描述,数据类型描述等信息。这是因为Hprose是支持弱类型动态语言调用的,因此参数个数,参数类型,结果类型在发布期是不确定的,在调用期才会确定。所以,Hprose与Web Service相比无论是服务的发布还是客户端的调用都更加灵活。

如果您不希望用户直接通过浏览器就可以查看发布列表的话,您可以禁止服务器接收GET请求。方法很简单,只需要在调用handle方法之前调用setGetEnabled方法,将参数设置为false即可。

好了,现在通过GET方式访问不再显示发布列表啦。但是客户端调用仍然可以正常执行,丝毫不受影响。不过在调试期间,不建议禁用发布列表,否则将会给您的调试带来很大的麻烦。也许您更希望能够在调试期得到更多的调试信息,那这个可以做到吗?答案是肯定的,您只要打开调试开关就可以了。

[b][size=x-large]调试开关[/size][/b]

默认情况下,在调用过程中,服务器端发生错误时,只返回有限的错误信息。当打开调试开关后,服务器会将错误堆栈信息全部发送给客户端,这样,您在客户端就可以看到详细的错误信息啦。

开启方法很简单,只需要在调用handle方法之前调用setDebugEnabled方法,将参数设置为true即可。

[b][size=x-large]P3P开关[/size][/b]

在Hprose的http服务中还有一个P3P开关,这个开关决定是否发送P3P的http头,这个头的作用是让IE允许跨域接收的Cookie。当您的服务需要在浏览器中被跨域调用,并且希望传递Cookie时(例如通过Cookie来传递Session ID),您可以考虑将这个开关打开。否则,无需开启此开关。此开关默认是关闭状态。开启方法与上面的开关类似,只需要在调用handle方法之前调用setP3PEnabled方法,将参数设置为true即可。

[b][size=x-large]服务器事件[/size][/b]

也许您可能还希望设置其它的http头,或者希望在发生错误时,能够在服务器端进行日志记录。甚至希望在调用发生的前后可以做一些权限检查或日志记录等。在Hprose中,这些都可以轻松做到。Hprose提供了这样的事件机制。

Hprose服务器提供了四个事件,它们分别是onBeforeInvoke、onAfterInvoke、onSendHeader和onSendError。下面我们就来对这四个事件分别做一下介绍。

[b][size=large]onBeforeInvoke事件[/size][/b]

当服务器端发布的方法被调用前,onBeforeInvoke事件被触发,它有三个参数,他们从左到右的顺序分别是name,args和byRef。其中name为客户端所调用的方法名,args为方法的参数,byRef表示是否是引用参数传递的调用。

您可以在该事件中做用户身份验证,例如IP验证。也可以作日志记录。如果在该事件中想终止调用,抛出异常即可。

[b][size=large]onAfterInvoke事件[/size][/b]

当服务器端发布的方法被成功调用后,onAfterInvoke事件被触发,其中前三个参数与onBeforeInvoke事件一致,最后一个参数result表示调用结果。

当调用发生错误时,onAfterInvoke事件将不会被触发。如果在该事件中抛出异常,则调用结果不会被返回,客户端将收到此事件抛出的异常。

[b][size=large]onSendHeader事件[/size][/b]

当服务器返回响应头部时,onSendHeader事件会被触发,该事件无参数。

在该事件中,您可以发送您自己的头信息,例如设置Cookie。该事件中不应抛出任何异常。

[b][size=large]onSendError事件[/size][/b]

当服务器端调用发生错误,或者在onBeforeInvoke、onAfterInvoke事件中抛出异常时,该事件被触发,该事件只有一个参数error。

您可以在该事件中作日志记录,但该事件中不应再抛出任何异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值