zoukankan      html  css  js  c++  java
  • Java调用Axis2用SAP WSDL生成的Stub文件

    1、SAP发布WebService

    2、SAP配置WebService产生的WSDL通过Axis2生成对应的Stub文件

    3、Java调用Axis2用SAP WSDL生成的Stub文件

    ①建立JavaWeb工程,将axis的相关jar导入至lib文件

    ②将第2步生成的Stub类文件放入项目包里,再新建1个TEST测试类

    ③TEST测试类代码:

    package com;
    
    import org.apache.axis2.client.Options;
    import org.apache.axis2.transport.http.HTTPConstants;
    import org.apache.axis2.transport.http.impl.httpclient4.HttpTransportPropertiesImpl;
    
    import com.ZRFC_MM_PLM_STOCKStub.Char4;
    import com.ZRFC_MM_PLM_STOCKStub.Char40;
    import com.ZRFC_MM_PLM_STOCKStub.TABLE_OF_ZRFCT007;
    import com.ZRFC_MM_PLM_STOCKStub.ZRFCT007;
    import com.ZRFC_MM_PLM_STOCKStub.ZRFC_MM_PLM_STOCK;
    import com.ZRFC_MM_PLM_STOCKStub.ZRFC_MM_PLM_STOCKResponse;
    
    
    public class TEST {
        public static void main(String[] args) {
            try {
                ZRFC_MM_PLM_STOCKStub service = new ZRFC_MM_PLM_STOCKStub();
                
                Options options = service._getServiceClient().getOptions();
                
                //设置超时时间
                options.setTimeOutInMilliSeconds(120000);
                
                //SAP的认证
                HttpTransportPropertiesImpl.Authenticator auth = new HttpTransportPropertiesImpl.Authenticator();
                auth.setUsername("XXX");
                auth.setPassword("XXX");
                service._getServiceClient().getOptions().setProperty(HTTPConstants.AUTHENTICATE, auth);
                
                ZRFC_MM_PLM_STOCK zrfc = new ZRFC_MM_PLM_STOCK();
                
                //Import参数
                Char4 werks = new Char4();
                werks.setChar4("2000");
                zrfc.setP_WERKS(werks);
                
                Char40 matnr = new Char40();
                matnr.setChar40("ATBA0151-XX");
                zrfc.setP_MATNR(matnr);
                
                TABLE_OF_ZRFCT007 tb_data = new TABLE_OF_ZRFCT007();
    
                zrfc.setIT_DATA(tb_data);
                
                ZRFC_MM_PLM_STOCKResponse response = service.zRFC_MM_PLM_STOCK(zrfc);
                
                for(ZRFCT007 zrfct007 : response.getIT_DATA().getItem()) {
                    System.out.print("工厂:"+zrfct007.getWERKS());
                    System.out.print("物料:"+zrfct007.getMATNR());
                    System.out.print("仓库:"+zrfct007.getLGORT());
                    System.out.print("库存:"+zrfct007.getLABST());
                    System.out.println("");
                }
                
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    ④运行效果(对比SAP函数直接执行的结果)

    4、SAP函数:

    5、注意事项:

    ①Transport error: 403 Error: Forbiddenm

    SAP事务代码SICF-->输入层次结构类型SERVICE执行-->依照Stub文件里的地址找到对应webservice并启用服务

    ②com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog at [row,col {unknown-source}]: [1,0]

    在SE37函数生成Webservice的时候选错Profile导致WSDL命名空间错误

  • 相关阅读:
    【试水CAS-4.0.3】第07节_CASclient配置单点登录
    30分钟,让你彻底明白Promise原理
    【你离硅谷只差一步】网易中国创业家大赛项目火热征集中
    21分钟学会写编译器
    Android 模拟器下载、编译及调试
    GitLab 自动触发 Jenkins 构建
    微服务监控探索
    感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
    延迟任务调度系统—技术选型与设计(下篇)
    使用QUIC
  • 原文地址:https://www.cnblogs.com/StephenAmell/p/14263266.html
Copyright © 2011-2022 走看看