soap 相关问题

简单对象访问协议(SOAP)是用于在Web服务的实现中交换结构化信息的协议规范。

URL 无法连接的卷曲问题

所以我不是一个很好的网络人,所以我希望有人能给我指出正确的方向,以找出我做错了什么。 我正在尝试使用curl 来发布SOAP 消息。 我跑了...

回答 3 投票 0

使用 Angular 通过 HTTP 发送 SOAP 请求?

我正在使用简单的 HTML、CSS 和 Angular 开始一个新的 Web 应用程序项目。我们正在使用现有的 Web 服务从某些服务器检索数据,我们尝试使用的一项服务是公共服务...

回答 2 投票 0

带有大消息的 JAX-WS SoapHandler:OutOfMemoryError

使用 JAX-WS 2,我看到其他人也谈到过的一个问题。问题是,如果在处理程序内接收到 SOAP 消息,并且该 SOAP 消息很大 - 是否由于内联 SOAP ...

回答 5 投票 0

如何调试SoapHttpClientProtocol

我试图通过 Visual Studio 生成的一些代理代码(基于服务中的 WSDL)调用外部 Web 服务。我返回的结果对象为空,尽管我可以看到

回答 1 投票 0

使用 gradle、框架 Micronaut、技术 kotlin 创建 SOAP Web 服务

第一次使用Micronaut(gradle)构建SOAP服务,网上查到的资料不是太多。所有路径都引导我到这些库: 实施(“com.sun...

回答 1 投票 0

如何使用 Java 从 SOAP 响应中检索元素值?

我正在尝试从以下来自 salesforce 的字符串响应中获取标签值, 我正在尝试从以下来自 salesforce 的字符串响应中获取标签值, <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://soap.sforce.com/2006/04/metadata"> <soapenv:Body> <listMetadataResponse> <result> <createdById>00528000001m5RRAAY</createdById> <createdByName>Hariprasath Thanarajah</createdByName> <createdDate>1970-01-01T00:00:00.000Z</createdDate> <fileName>objects/EmailMessage.object</fileName> <fullName>EmailMessage</fullName> <id /> <lastModifiedById>00528000001m5RRAAY</lastModifiedById> <lastModifiedByName>Hariprasath Thanarajah</lastModifiedByName> <lastModifiedDate>1970-01-01T00:00:00.000Z</lastModifiedDate> <namespacePrefix /> <type>CustomObject</type> </result> </listMetadataResponse> </soapenv:Body> </soapenv:Envelope> 上面我们有标签<fullName>。我需要获取标签内的值并将其放入字符串数组中。我尝试过使用 substring 方法,但它只返回一个值。有人可以建议我这样做吗? 我已经尝试过如下, public static Document loadXMLString(String response) throws Exception { DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(response)); return db.parse(is); } public static List<String> getFullNameFromXml(String response, String tagName) throws Exception { Document xmlDoc = loadXMLString(response); NodeList nodeList = xmlDoc.getElementsByTagName(tagName); List<String> ids = new ArrayList<String>(nodeList.getLength()); for(int i=0;i<nodeList.getLength(); i++) { Node x = nodeList.item(i); ids.add(x.getFirstChild().getNodeValue()); System.out.println(nodeList.item(i).getFirstChild().getNodeValue()); } return ids; } 从上面的代码中,您将获得 ids 列表。之后,您可以将它们放入字符串数组并将它们返回到字符串数组,如下所示, List<String> output = getFullNameFromXml(response, "fullName"); String[] strarray = new String[output.size()]; output.toArray(strarray); System.out.print("Response Array is "+Arrays.toString(strarray)); 使用以下代码解析 SOAP 响应并获取元素值。 将 XML 响应保存在系统上的任何位置。调用方法 getResult()。它是一个通用方法。它采用 Web 服务响应的有效负载类类型并返回 java 对象。 private static String readXMLFile(String fileName) { File xmlFile = new File("response file path from step 1"); Reader fileReader = new FileReader(xmlFile); BufferedReader bufReader = new BufferedReader(fileReader); StringBuilder sb = new StringBuilder(); String line = bufReader.readLine(); while (line != null) { sb.append(line).append("\n"); line = bufReader.readLine(); } String xml2String = sb.toString(); bufReader.close(); } public <T> T getResult(String xml, String path, Class<T> type) { final Node soapBody = getSoapBody(xml, path); return getInstance(soapBody, type); } private Node getSoapBody(String xml, String path) { try { SOAPMessage message = getSoapMessage(xml, path); Node firstElement = getFirstElement(message); return firstElement; } catch (Exception e) { throw new RuntimeException(e); } } private SOAPMessage getSoapMessage(String xml, String path) throws SOAPException, IOException { MessageFactory factory = MessageFactory.newInstance(); FileInputStream fis = new FileInputStream(path); BufferedInputStream inputStream = new BufferedInputStream(fis); return factory.createMessage(new MimeHeaders(), inputStream); } private Node getFirstElement(SOAPMessage message) throws SOAPException { final NodeList childNodes = message.getSOAPBody().getChildNodes(); Node firstElement = null; for (int i = 0; i < childNodes.getLength(); i++) { if (childNodes.item(i) instanceof Element) { firstElement = childNodes.item(i); break; } } return firstElement; } private <T> T getInstance(Node body, Class<T> type) { try { JAXBContext jc = JAXBContext.newInstance(type); Unmarshaller u = jc.createUnmarshaller(); return (T) u.unmarshal(body); } catch (JAXBException e) { throw new RuntimeException(e); } } 如果您只想解析这个单个元素,您可以使用 SAX 或 StAX 解析器,如此处所述 https://www.javacodegeeks.com/2013/05/parsing-xml-using-dom-sax-and-stax- parser-in-java.html. SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { boolean fullName = false; public void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException { System.out.println("Start Element :" + qName); if (qName.equals("fullName")) { fullName = true; } } public void characters(char ch[], int start, int length) throws SAXException { if (fullName ) { System.out.println("Full Name : " + new String(ch, start, length)); fullName = false; } } } saxParser.parse(mySoapResponse, handler); 或者您可能想阅读有关 JAX-WS API 的更多信息,以创建 SOAP 客户端以使用 Salesforce Web 服务。

回答 3 投票 0

SOAP Office.js EWS ReplyView getAttachments

我想生成一个 SOAP 请求来下载我正在回复的电子邮件的附件(所以我在 MessageComposeCommandSurface 中,而不是在 MessageReadCommandSurface 中,我知道会有一个 AP...

回答 1 投票 0

如何正确生成值来签署 SOAP 信封

我正在使用 xmlsec1 工具和 XML 数字签名 (XMLDSIG) 标准对 SOAP 信封进行签名。这是我正在使用的未签名的 SOAP 信封。 我正在使用 xmlsec1 工具和 XML 数字签名 (XMLDSIG) 标准对 SOAP 信封进行签名。这是我正在使用的未签名 SOAP 信封。 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue /> </Reference> </SignedInfo> <SignatureValue /> <KeyInfo> <X509Data /> </KeyInfo> </Signature> <soapenv:Body>This is the body of the SOAP envelope</soapenv:Body> </soapenv:Envelope> 我使用以下 xmlsec1 命令生成了签名信封。 xmlsec1 --sign --privkey-pem private_key.pem --output signed_test.xml test.xml 生成的签名信封如下 <?xml version="1.0"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>mT/qq9iX2rvTrWOPfE8thFOKdbA=</DigestValue> </Reference> </SignedInfo> <SignatureValue>eZFngILLORe+r/07FupC9YPJEB3n3qhTyEi0+3J7Ivv/20rm7YNU5CllAiUmLUDJ 0A9/YLDo2BOokrNmAkpWtxU1xs83FH3NDecfqEj1hgIXsbkMhJLh2szssR6nRoff ZV8FqWjQgUGS/IKLY0R9S/pxMxROKkiJ0J71hFHvuFphN/ZtpOGXdmX7oaS6EZmT BeSu8R2jGiMVbGyf4+EBxkpSN6VF4tn3MWgfP+MV7ICw3MHHgNVd7Nqy7vS+kOtZ hq2Tndg4b7O79XW2ni5tmpKJzHPDBfWFS+fEXHqkOFcPnb1rCk3oTOcaCqHOVZ1m BbiB7r2bxyrKDL7uIA4suw==</SignatureValue> <KeyInfo> <X509Data/> </KeyInfo> </Signature> <soapenv:Body>This is the body of the SOAP envelope</soapenv:Body> </soapenv:Envelope> 我试图理解 和 是如何计算的。根据 SOAP 信封,我知道的是: DigestValue 使用 SHA-1 算法,如元素中所指定。 SignatureValue 使用 RSA-SHA1 算法生成,如元素中所指定。 当我使用 <soap:Body> 算法对 sha1 进行哈希处理时,我得到了不同的值。如果有人可以展示正确生成这些值的详细步骤,我们将不胜感激。 我在这个 github 存储库中检查了 xmlsec 的代码:https://github.com/lsh123/xmlsec我认为这是正确的。 我对C和密码学的了解很差,所以我无法直接向你解释。 但是通过在整个项目中搜索“SignatureValue”,我在第805行找到了这个文件https://github.com/lsh123/xmlsec/blob/master/src/gcrypt/signatures.c#L805,其中解释 SignatureValue 基于 DSA-SHA1 的评论,这里是: DSA-SHA1 signature transform http://www.w3.org/TR/xmldsig-core/#sec-SignatureAlg: The output of the DSA algorithm consists of a pair of integers usually referred by the pair (r, s). The signature value consists of the base64 encoding of the concatenation of two octet-streams that respectively result from the octet-encoding of the values r and s in that order. Integer to octet-stream conversion must be done according to the I2OSP operation defined in the RFC 2437 [PKCS1] specification with a l parameter equal to 20. For example, the SignatureValue element for a DSA signature (r, s) with values specified in hexadecimal: r = 8BAC1AB6 6410435C B7181F95 B16AB97C 92B341C0 s = 41E2345F 1F56DF24 58F426D1 55B4BA2D B6DCD8C8 from the example in Appendix 5 of the DSS standard would be <SignatureValue>i6watmQQQ1y3GB+VsWq5fJKzQcBB4jRfH1bfJFj0JtFVtLotttzYyA==</SignatureValue> 希望它可以帮助您找到您想要的东西。

回答 1 投票 0

Perl SOAP::WSDL 访问 HTTPS 未经授权错误

我正在尝试生成一个 Perl 库来连接到 Web 服务。该网络服务位于 HTTPS 服务器中,我的用户可以访问它。 我已经多次执行 wsdl2perl.pl,使用不同的选项...

回答 4 投票 0

当 SOAPAction HTTP 标头为空字符串时,jaxws-ri 如何将 SOAP 请求路由到正确的方法?

我在 Tomcat 上使用 jaxws-ri,版本 2.3.2 我有带有一些 JAX-WS 注释的简单类: @WebService() 公开课测试{ @WebMethod() 公共字符串validateCard(字符串id){

回答 0 投票 0

使用 spring-ws 验证 SOAP 服务中的请求签名和签名响应

前提:我需要创建一个使用 WS-Security 标准的 SOAP 服务来执行标题中描述的操作,以便 SOAP 客户端可以使用该服务。 我有什么 肥皂服务已完成

回答 1 投票 0

从 SOAP 请求接收空结果

我正在尝试向巴西政府端点发出肥皂请求,但遇到了一些麻烦。 他们提供以下 wsdl:https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRecepcaoSinc/

回答 1 投票 0

如何在 Spring Web 服务中为 SOAP 故障元素设置自定义命名空间前缀?

我正在开发一个 Spring Web Services 项目,我需要自定义 SOAP 错误响应。具体来说,我想确保 SOAP 响应中的错误元素使用自定义命名空间 p...

回答 1 投票 0

ONVIF 设置主机名

我尝试向 ONVIF 摄像机发送 SetHostName 请求,但无法正确发出请求,并且总是收到错误。 请帮我。 ''' 我尝试向 ONVIF 摄像机发送 SetHostName 请求,但无法正确发出请求,并且总是收到错误消息。 请帮助我。 ''' <?xml version='1.0' encoding='utf-8' ?> <soap-env:Envelope xmlns:soap-env="http://www.w3.org/2003/05/soap-envelope"> <soap-env:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username> admin </wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"> gfdsgfsgfsgfs </wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"> fdsgfdsgfsdfgsd </wsse:Nonce> <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 2024-01-17T14:03:35+00:00 </wsu:Created> </wsse:UsernameToken> </wsse:Security> </soap-env:Header> <soap-env:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <tds:SetHostname xmlns="http://www.onvif.org/ver10/device/wsdl"> <tds:HostnameInformation> <tt:Name>NewHostname1234</tt:Name> </tds:HostnameInformation> </tds:SetHostname> </soap-env:Body> </soap-env:Envelope>''' 我看到有几个人还在关注这个帖子。以下是我如何使用curl 检索主机名。当然,更改您设备的 IP 和端口。它必须是一根连续的字符串才能工作。 curl http://192.168.1.40:8899/onvif/device_service --data '' --header '内容类型:application/soap+xml;字符集=utf-8;行动=“http://www.onvif.org/ver10/device/wsdl/GetHostname”;'

回答 1 投票 0

覆盖 WSDL 中的整个地址

我使用本指南创建了一个简单的 spring-boot SOAP Web 服务: https://spring.io/guides/gs/having-web-service/ 我将其部署到云服务,但会有一个 API 管理层...

回答 2 投票 0

IBM 大型机采用 IBM-37 图表集编码格式为 UTF-8,以便在 springboot 应用程序中理解

嗨,你好吗?我正在尝试转换 xml raw 消息来自 IBM 大型机,采用 IBM-37 图表集编码格式为 UTF-8,以便在 springboot 应用程序中理解。 知道该怎么做吗?我是...

回答 1 投票 0

PowerShell New-WebServiceProxy 无法获取所有方法

我正在编写一个 PS 脚本来检查 Windows 服务的状态,并希望在某些情况下调用特定的 Web 服务方法: $wsdl =“https://webservice-page/wsdl.php?user” $webserviceU...

回答 1 投票 0

ASP.NET Core - 反序列化城市 API XML 响应不起作用

调用城市 API 时,它以 XML 格式返回此响应。我想将此 XML 反序列化为一个对象。反序列化抓取对象,直到 diffgram 内部 diffgram 我们有 NewDataSet pr...

回答 1 投票 0

城市 API XML 响应 XmlDeserialization 不起作用,ASP.NET Core

调用城市 API 时,它会以 XML 格式返回此响应。我想将此 XML 反序列化为 C# 对象。反序列化抓取对象直到 diffgram 在 diffgram 中我们有 NewDataSet 属性

回答 1 投票 0

如何使用netsuite API获取移动设备上的数据?

我想获取数据并将其发布到netsuite。我在Google上探索过,但我只了解PhpToolKit和SuiteScript。我想在 NetSuite 中创建一些自定义模块并从 netsuite 获取数据

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.