xmlrpc使用中的一个问题
2006-08-23 21:33
197 查看
xmlrpc是一种很简单的远程调用的方法,但有个问题就是调用中传送的参数不能使非ascii码的字符,否则客户端会抛出异常。我在使用时为了性能的考虑采用了异步方法调用,即client.executeAsync(),这时客户端是程序的主线程是不会抛出异常的,而且我也没有定义回调的函数,让其为null,所以当我发现没有调用xmlrpc的服务器端时很疑惑(更为要命的时我用两个客户端调用,一个好使一个不好使,
,这就更让我摸不着头脑了,后来估计会不会是两个程序的lib中的xmlrpc的实现jar包版本不同,虽然都是用的apache的开源项目,但估计这种可能性不大)。后来把异步调用改成了同步调用,异常才得以被主线程找到,就是使用非ascii码的字符作为传输的参数(也就是中文拉)。中文是不能不要的,但xmlrpc又不让传,解决的一个很简单的方法就是用Base64类(很多jar包都带)先把中文encode()成一些ascii码字符,传过去后再用Base64的decode()将其复原成中文即可!
还有一个要注意的地方就是xmlrpc远程定义的要被调用的方法最好不要是void的,最后返回一个别的类型的值,否则在同步调用方法中也会抛出错误!(异步的没试)
,这就更让我摸不着头脑了,后来估计会不会是两个程序的lib中的xmlrpc的实现jar包版本不同,虽然都是用的apache的开源项目,但估计这种可能性不大)。后来把异步调用改成了同步调用,异常才得以被主线程找到,就是使用非ascii码的字符作为传输的参数(也就是中文拉)。中文是不能不要的,但xmlrpc又不让传,解决的一个很简单的方法就是用Base64类(很多jar包都带)先把中文encode()成一些ascii码字符,传过去后再用Base64的decode()将其复原成中文即可!
还有一个要注意的地方就是xmlrpc远程定义的要被调用的方法最好不要是void的,最后返回一个别的类型的值,否则在同步调用方法中也会抛出错误!(异步的没试)
相关文章推荐
- vfork 挂掉的一个问题拓展实验二 (子进程使用exit退出时候的栈帧)
- 美国宇航员为墨水笔在太空无法使用的的问题困然,于是花好几亿造出太空圆珠笔后,一个小男孩说,用铅笔不就解决了这个问题了吗?
- 关于使用jwSMTP库发送邮件的一个诡异问题
- 一个关于AVPlayer蛋疼的释放问题(iOS 9.0 AVPlayer的使用与内存的释放问题)
- 只有一个公网IP也可以使用LVS的DR模式!(外带php session粘滞问题解决)
- 使用winsock2.h时注意的一个问题
- telnet 后使用ctags的一个问题解决
- 一个使用gevent协程池的问题代码分析
- 关于mysql使用索引的一个问题
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题
- Android 使用Xutils报的一个Http类API过时问题
- 一个页面使用两次timepicker.js引起的Maximum call stack size exceeded问题解决办法及bug修复
- shiro SessionDao不设置CacheManager也可以使用缓存的一个问题
- 使用移动端页面iScroll插件遇到的一个checkbox选择的问题
- 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为(转)
- 八皇后非递归(仅使用一个数组且可扩展为N皇后问题)
- Python:通过自定义系统级快捷键来控制程序开始或停止记录日志(使用小技巧解决一个貌似无解的问题)
- 使用dom4j解析xml文件时遇到一个怪问题
- jquery parent()方法在table标签中使用需要注意的一个问题
- 笔记:使用qtcreator过程中遇到到的一个小问题