壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4337|回复: 5

Java调用BIEE提供的Webservice

  [复制链接]
发表于 2010/5/27 17:22:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 ygj26 于 2013/4/25 13:23 编辑

太久没关注这里,看到有很多人浏览这个贴子,结一下贴。

使用axis生成客户端代码再调用会简单很多,原始的方法往往可能因一些配置或代码写的不到位而无法使用。

http://axis.apache.org/axis/

下面的内容可以不看了。
  1. package com.ygj.webservice;

  2. public class HelloService {
  3. public String sayHello() {
  4. return "hello";
  5. }

  6. public String sayHello(String name) {
  7. if(name == null || name.equals("")) {
  8. name = "nobody";
  9. }
  10. return "Hello, " + name;
  11. }
  12. }
复制代码
以上是我自己开发的一个测试类,发布成Webservice后,通过客户端程序能正常调用,客户端程序如下:
  1. package test;

  2. import java.net.MalformedURLException;
  3. import java.net.URL;
  4. import java.rmi.RemoteException;

  5. import javax.xml.rpc.ServiceException;

  6. import org.apache.axis.client.Call;
  7. import org.apache.axis.client.Service;

  8. public class HelloServiceTest {

  9. public static void main(String[] args) {
  10. try {
  11. System.out.println("Begin......");
  12. Service service = new Service();
  13. Call call = (Call) service.createCall();
  14. call.setTargetEndpointAddress(new URL("http://localhost:9704/axis_webservice/services/HelloServices?wsdl"));
  15. call.setOperationName("sayHello");
  16. call.addParameter("name", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  17. call.setReturnType(org.apache.axis.Constants.XSD_STRING);
  18. try {
  19. String ret = (String) call.invoke(new Object[] {"张三"});
  20. System.out.println("The return value is:" + ret);
  21. } catch (RemoteException e) {
  22. e.printStackTrace();
  23. }
  24. } catch (ServiceException e) {
  25. e.printStackTrace();
  26. } catch (MalformedURLException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. }
复制代码
输出结果为:Hello,张三

BIEE提供的Webservice中有方法:
String logon(String username, String password)
我的程序客户端调用程序如下:
  1. package test;

  2. import java.net.MalformedURLException;
  3. import java.net.URL;
  4. import java.rmi.RemoteException;

  5. import javax.xml.namespace.QName;
  6. import javax.xml.rpc.ServiceException;

  7. import org.apache.axis.client.Call;
  8. import org.apache.axis.client.Service;

  9. public class BieeWebServiceTest {

  10. public static void main(String[] args) {
  11. try {
  12. System.out.println("Begin......");
  13. Service service = new Service();
  14. Call call = (Call) service.createCall();
  15. call.setTargetEndpointAddress(new URL("http://localhost:9704/analytics/saw.dll?wsdl"));
  16. call.setOperationName(new QName("com.siebel.analytics.web/soap/v5", "logon"));
  17. call.addParameter("username", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  18. call.addParameter("password", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
  19. call.setReturnType(org.apache.axis.Constants.XSD_STRING);
  20. try {
  21. String ret = (String) call.invoke(new Object[] {"Administrator", "Administrator"});
  22. System.out.println("The return value is:" + ret);
  23. } catch (RemoteException e) {
  24. e.printStackTrace();
  25. }
  26. } catch (ServiceException e) {
  27. e.printStackTrace();
  28. } catch (MalformedURLException e) {
  29. e.printStackTrace();
  30. }
  31. }
复制代码
可是却报出错误:
AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (400)Bad Request
faultActor:
faultNode:
faultDetail:
{}:return code:  400
{http://xml.apache.org/axis/}HttpErrorCode:400
(400)Bad Request
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at test.BieeWebServiceTest.main(BieeWebServiceTest.java:27)

试了很多办法了,望高人能够指点,我的目的是能够调BIEE的Webservice,所以问题不局限于此,仅打个比方,有做过这方面的,还请多多帮忙!!

另外我也试过本论坛提供下载的 Java集成BIEE源代码,使用其提供的SAWSessionServiceSoapProxy也不能做到。请高人指教!!

谢谢!!
发表于 2010/6/2 09:11:45 | 显示全部楼层
帮楼主顶,同样期待解决方案
发表于 2010/6/5 11:46:29 | 显示全部楼层
关注中。。。。。。。。。
发表于 2010/7/8 23:51:04 | 显示全部楼层
Thanks for your sharing!
发表于 2010/8/31 10:48:22 | 显示全部楼层
thank you!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 08:23 , Processed in 0.017638 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表