从JAVA发行耗用Web服务的SAP

2020-09-18 15:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,人们。 我想使用Java...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,人们。

我想使用Java的Web服务SAP,但不能。 该Web服务可在SOAP UI中使用,但不适用于Java。 这是我的代码:


 导入java.util.Base64;
 导入javax.xml.namespace.QName;
 导入javax.xml.soap。*;
 导入javax.xml.transform。*;
 导入javax.xml.transform.stream。*;


 公共类SOAPClientSAAJ {

     公共静态void main(String args []){
    
         尝试{
             SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
             SOAPConnection soapConnection = soapConnectionFactory.createConnection();
            

             字符串url =" http://vhicedesci.hec.ice.go.cr:8000/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/z_wsdl_suma/100/z_wsdl_suma/z_wsdl_suma?  sap-client = 100";


             SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(),url);

            //处理SOAP响应
             printSOAPResponse(soapResponse);


             soapConnection.close();


         } catch(Exception e){
             System.err.println(""向服务器发送SOAP请求时发生错误");
             e.printStackTrace();
         }
     }


     私有静态SOAPMessage createSOAPRequest()抛出异常{


         MessageFactory messageFactory = MessageFactory.newInstance();
        
         SOAPMessage消息= messageFactory.createMessage();
    
         SOAPHeader标头= message.getSOAPHeader();
         SOAPBody主体= message.getSOAPBody();
         SOAPPart part = message.getSOAPPart();
        
 
        
        
         SOAPEnvelope信封= part.getEnvelope();
        
         字符串PREFERRED_PREFIX =" soapenv";
         字符串SOAP_ENV_NAMESPACE =" soapenv";
        
         MimeHeaders标头= message.getMimeHeaders();
         headers.addHeader(" SOAPAction"," ZFmPruebaSumaWsdl");
        
        
         Envelope.RemoveNamespaceDeclaration(envelope.getPrefix());
         Envelope.addNamespaceDeclaration(PREFERRED_PREFIX,SOAP_ENV_NAMESPACE);
         Envelope.setPrefix(PREFERRED_PREFIX);
         header.setPrefix(PREFERRED_PREFIX);
         body.setPrefix(PREFERRED_PREFIX);
        
        
        
         字符串用户名=" _USER_";
         字符串密码=" _PASSWORD_";
        
         字符串userAndPassword = String.format("%s:%s",用户名,密码);


         字符串basicAuth = Base64.getEncoder()。encodeToString(userAndPassword.getBytes());
         MimeHeaders mimeHeaders = message.getMimeHeaders();
         mimeHeaders.addHeader(" Authorization"," Basic" + basicAuth);
       
         字符串urn =" urn:sap-com:document:sap:soap:functions:mc-style";

        //SOAP信封
         信封.addNamespaceDeclaration(" urn",缸);
       
         QName pruebaSuma =新的QName(" urn:ZFmPruebaSumaWsdl");
         SOAPElement元素= body.addChildElement(pruebaSuma);
        
         QName childName = new QName(" ImVValor_1");
         SOAPElement item1 = element.addChildElement(childName);
         item1.addTextNode(" 1");
        
         QName childName2 =新的QName(" ImVValor_2");
         SOAPElement item2 = element.addChildElement(childName2);
         item2.addTextNode(" 2");


        
         message.saveChanges();
         System.out.print(" Request SOAP Message =");
         message.writeTo(System.out);
         System.out.println();
         System.out.print("获取SOAP响应");
         返回消息;

     }


   /**
      *用于打印SOAP响应的方法
      */


     私有静态无效printSOAPResponse(SOAPMessage soapResponse)引发异常{

     System.out.print("获取SOAP响应");
         TransformerFactory TransformerFactory = TransformerFactory.newInstance();
         变压器变压器= transformerFactory.newTransformer();
         源sourceContent = soapResponse.getSOAPPart()。getContent();
         System.out.print(" \ nResponse SOAP Message =");
         StreamResult结果=新的StreamResult(System.out);
         Transformer.transform(sourceContent,result);
     }


 }
 

它总是返回错误:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:错误的响应:(307临时重定向


我将非常感谢您的帮助。


这是我的wsdl

 
     
       
          令牌
       
    
    
       
           1 
           2 
       
    
 
 

2条回答
暮风yp
2020-09-18 15:21

Helllo Juan,

1。

您发布的WSDL声明中没有看到定义的端点。 如果此Web服务将部署在NW AS Java上,则在WSDL定义中应包括WS端点。

2。

WS调用的哪一部分是对AS Java的? WS客户端在哪里,WS提供者在哪里?

提供的WS Provider位于NW AS Java上,此Web服务的配置位置(或配置方式):

单一服务管理中的

*;

*在小组服务中

*或"目的地"中。

此致

一周热门 更多>