点击此处---> 群内免费提供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临时重定向
strong>
我将非常感谢您的帮助。
这是我的wsdl
令牌 1 2
Helllo Juan,
1。
您发布的WSDL声明中没有看到定义的端点。 如果此Web服务将部署在NW AS Java上,则在WSDL定义中应包括WS端点。
2。
WS调用的哪一部分是对AS Java的? WS客户端在哪里,WS提供者在哪里?
提供的WS Provider位于NW AS Java上,此Web服务的配置位置(或配置方式):
*;
*在小组服务中
*或"目的地"中。
此致
你好胡安
如果从您的角度回答了该论坛主题中的第一个问题,请单击"接受"链接以完成此问题。 这里有更多详细信息。
https://blogs.sap.com/ 2017/08/15/如何回答我的问题/
否则,请发布有关您面临的当前障碍的更多详细信息。
在此先感谢您为改善SAP社区管理做出的贡献!
此致
一周热门 更多>