java - 带有字符 ^ 的 SOAP MalformedURLException

标签 java web-services soap soapui

我必须使用 SOAP 调用 Web 服务,而 URL 中恰好有 ^。 URL 具有以下结构

String url = "http://sampleurl.com?type=entry&version=1.0&Sender.Service=SenderService&Interface=sampleurl/ABC^ServiceRequest";

这给了我以下异常:

com.sun.xml.messaging.saaj.util.JaxmURI$MalformedURIException: Query string contains invalid character:^
11:47:10,670 ERROR [STDERR]     at com.sun.xml.messaging.saaj.util.JaxmURI.initializePath(JaxmURI.java:690)
11:47:10,670 ERROR [STDERR]     at com.sun.xml.messaging.saaj.util.JaxmURI.initialize(JaxmURI.java:407)
11:47:10,670 ERROR [STDERR]     at com.sun.xml.messaging.saaj.util.JaxmURI.<init>(JaxmURI.java:194)
11:47:10,670 ERROR [STDERR]     at com.sun.xml.messaging.saaj.util.JaxmURI.<init>(JaxmURI.java:178)
11:47:10,670 ERROR [STDERR]     at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:254)

令我困惑的是,即使我将 ^ 放入 URL 中,使用 SOAP UI 调用 Web 服务也会给我一个正确的答案。

如果我在应用程序或 SOAP UI 中将插入符转义为 %5e,则 Web 服务会响应 “消息不完整。找不到发件人”,因此看起来^ 必须存在。

知道如何将 ^ 放入 URL 中而不引发异常吗?

最佳答案

URL 中不允许使用 ^ 字符,可能 SOAPUI 正在为您编码 URL。我认为大小写表示对于 URL 转义字符很重要,请尝试使用大写 %5E 而不是小写 %5e

编辑:

我只是尝试在本地主机上配置 TCP 监视器,并从 SOAPUI 向 http://localhost:8091?type=entry&version=1.0&Sender.Service=SenderService&Interface=sampleurl/ABC^ServiceRequest 发出 SOAP 请求。在 TCP 监视器中,我看到 %5E 而不是 ^,因此 SOAPUI 似乎正确编码了 URL,您可以在下图中看到这一点:

enter image description here

希望这有帮助,

关于java - 带有字符 ^ 的 SOAP MalformedURLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24117897/

相关文章:

java - 将字符串拆分为相等的部分(java/groovy)

java - Orika 映射无法正常工作

java - Jersey Restful 服务 - 无法连接到服务器

java - Spring Boot 中的自签名证书和 SSL

java - Arraylist 不断显示最后一个元素 n 次

iphone - 像app这样实现网页有哪些坑?

web-services - 来自 Flex 的 SOAP 请求问题

ios - 从 SOAP 响应中获取 JSON

php - 将 XML SOAP 响应转换为 CSV

WCF BasicHttpBinding - 我在哪里可以找到 WSDL 中的 SOAP1.1