MyException - 我的异常网
当前位置:我的异常网» PB » java调用pb的webservice,该如何处理

java调用pb的webservice,该如何处理

www.MyException.Cn  网友分享于:2015-08-26  浏览:69次
java调用pb的webservice
最近因为工作需要webservice做接口传数据,上位系统是java的,折腾了很长时间,现在终于通了,向大家汇报下。
pb使用11.5
java使用eclipse,jdk1.5

最主要的参考书是网上搜到一个繁体pdf文件:《pb11webservice的应用》,按照指挥建立的服务端和客户端,是用vs2005分别作了验证,服务端、客户端都工作正常。

后面和上位java系统联调时,出了问题(上位系统的java程序,我并不了解,下面说的问题并非处处适用,仅供参考)。
1:pb客户端访问java服务端
这种例子网上最多,久不多说了。基本上使用pb的WebServiceProxy向导就能搞定,要注意的是需要在项目里添加pbwsclientxxx.pbd(在pb安装目录的share里,可以搜索下,还有个pbsoapclientxxx.pbd,好像是针对不同的服务端的,可以加不同的尝试下)。
pb的客户端访问java服务端好像没什么问题,和.net的服务端相比,我也没做什么特殊处理。

2:java客户端访问pb服务端
这个问题折腾了我很久,主要是java很不懂,pb11.5也很不懂。
java那边是直接访问我用pb做的客户端,代码如下:

 public static void main( String[] args ) throws Exception{
Service service=new Service();
String endpoint="http://xxx.xxx.xxx.xxx/pb_srv/N_pb_srv.asmx";
Call call=(Call)service.createCall();  
String result=null;
try {  
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new javax.xml.namespace.QName("http://xxx.xxx.xxx.xxx/pb_srv","recvsrv"));
call.addParameter("recvStr", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN);  
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
 
result = (String) call.invoke(new Object[] {"你好吗?"});
} catch (AxisFault fault) {
System.out.println( "Error : " + fault.toString());
}
System.out.println("class: "+result.toString());
}
}

访问报错:Error : System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 头 SOAPAction 的值: 。
但是这种方式访问.net的webservice是没问题的,网上关于这种报错的解决方案都是使用.net做服务端的,但是我不知道如何在pb里面实现。

参考《pb11webservice的应用》里面使用jsp验证pb服务端的例子(java基础太差,jsp页面报错,实在没有动力再搞tomcat了)没有实现。
后来还是使用eclipse实现,配置上tomcat,新建webserviceclient,指向到pb生成的wsdl,一路next,新建java类,直接调用导入的n_pb_srv.wsdl中string recvsrv(string)方法:

public class TestAxisWebService_pb1 {
public static void main( String[] args ) throws Exception{
String ssabc = null;
N_pb_srvLocator service = new N_pb_srvLocator();
N_pb_srvSoap tss = service.getn_pb_srvSoap();
try{ 
ssabc= (String)tss.recvsrv("test call pb ws");
} catch (AxisFault fault) {
System.out.println( "Error : " + fault.toString());
}
System.out.println("class: "+ssabc.toString());
}
}

测试通过。

一度想放弃pb作服务端的想法,不过终于还是实现了。希望兄弟们如果用pb作webservice,对方是java客户端的话,我的经验能有帮助。




------解决方案--------------------
pb作的webservice某种意义上说自成一体,
它的参数可以是ref的,这种得service用delphi的试验了半天总是调用失败。
------解决方案--------------------
学习,接分,帮顶.

文章评论

十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员都该阅读的书
程序员都该阅读的书
每天工作4小时的程序员
每天工作4小时的程序员
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
漫画:程序员的工作
漫画:程序员的工作
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Java程序员必看电影
Java程序员必看电影
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
一个程序员的时间管理
一个程序员的时间管理
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
如何成为一名黑客
如何成为一名黑客
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
那些争议最大的编程观点
那些争议最大的编程观点
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员和编码员之间的区别
程序员和编码员之间的区别
编程语言是女人
编程语言是女人
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我是如何打败拖延症的
我是如何打败拖延症的
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
我的丈夫是个程序员
我的丈夫是个程序员
代码女神横空出世
代码女神横空出世
 程序员的样子
程序员的样子
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
旅行,写作,编程
旅行,写作,编程
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
鲜为人知的编程真相
鲜为人知的编程真相
10个调试和排错的小建议
10个调试和排错的小建议
程序员必看的十大电影
程序员必看的十大电影
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有