SOAP - 不知道我的端点URL是什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOAP - 不知道我的端点URL是什么相关的知识,希望对你有一定的参考价值。

我希望这个问题非常简单,只是我是个白痴。我是SOAP的新手,我正在尝试建立SOAP WebService(使用Java和Spring),然后使用SoapUI工具尝试向我的Web服务发送SOAP请求。但是,当我提交请求时,我总是会收到404 Not Found错误。我怀疑/希望我在SoapUI中错误地设置了我的Endpoint,但我不知道我应该放在那里的价值。有人可以帮忙吗?

以下是我使用SOAP支持设置WebApp的步骤:

1)我正在使用在Spring Tool Suite(基于Eclipse)中运行并使用Jetty的现有WebApp(具有现有REST Web服务)。在我的web.xml文件中,我添加了一个新的SOAP Web服务:

<servlet-mapping>
    <servlet-name>SOAPWebService</servlet-name>
    <url-pattern>/ws/SOAP/*</url-pattern>
</servlet-mapping>
<servlet>
     <servlet-name>SOAPWebService</servlet-name>
     <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
     <init-param>
         <param-name>transformWsdlLocations</param-name>
         <param-value>true</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
</servlet>

2)我创建了一个新类“ProjectSearchEndpoint”,其注释为@Endpoint。有效负载root = @PayloadRoot(namespace =“http://FOO.FOO/foo”,localPart =“ProjectRequest”)

3)我将DSD添加到我的WebApp的WEB-INF:ws-project.xsd

4)我创建了一个名为:SOAPWebService-servlet.xml的servlet XML文件,该文件引用了DSD

<bean id="projectSearch" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
  <property name="schema" ref="schema"/>
  <property name="portTypeName" value="ProjectSearch"/>
</bean>

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
    <property name="xsd" value="/WEB-INF/ws-project.xsd"/>
</bean>

注意:端点代码和DSD来自博客:http://javaclue.blogspot.co.uk/2012/05/soap-web-service-using-spring-ws-20.html我编辑了命名空间以使其成为“http://FOO.FOO/foo”但除此之外代码是相同的,尽管我添加了System.out行以显示当构造对象时(它是)以及何时调用“searchProjects”方法(它永远不会)。

我可以成功启动webApp,如果在浏览器中我导航到URL:

http://localhost:8080/MyApp/ws/SOAP/projectSearch.wsdl 

我看到了WSDL。到目前为止都很好。

当我使用SoapUI时,我创建了一个新项目并传入了WSDL。 SoapUI似乎很高兴。我要求一个请求,SoapUI用我的ProjectRequest创建一个Soap Envelope。一切都很顺利!但是,要提交此请求,SoapUI需要一个端点。我认为我的终点是:

http://localhost:8080/MyApp/ws/SOAP/

但这只是返回404未找到。尝试其他组合,如

http://localhost:8080/MyApp/ws/SOAP/projectSearch
http://localhost:8080/MyApp/ws/SOAP/projectSearch?wsdl
http://localhost:8080/MyApp/ws/SOAP/ProjectRequest

所有结果都是404.我的终点是什么?我应该在SoapUI中投入什么价值?

更新1

为清楚起见,这就是我在soapUI中所做的

启动soapUI后,我创建了一个“新的soapUI项目”。名字是A1。初始WSDL是:

http://localhost:8080/MyApp/ws/SOAP/projectSearch.wsdl 

并在对话框中勾选“创建请求”。

我单击确定,它会创建一个ProjectSearchSoap11(旁边有一个绿色图标),下面有一个项目(红色箭头图标),下面是“Request1”(图标为SOAP)。我右键单击Request1并选择“显示请求编辑器”。这将显示一个带有SOAP信封和我的命名空间以及ProjectRequest的窗口。这一切看起来都不错。

我现在想要点击“提交请求到指定的端点URL”(左上角的绿色箭头)但是这是灰色的,直到我指定一个端点(在右边)。我点击端点下拉菜单并选择“编辑当前”。出现一个对话框。我输入:

http://localhost:8080/MyApp/ws/SOAP/ 

然后单击确定。现在启用运行图标(绿色)。单击此图标会导致出现“响应”窗口,该窗口为空白,但原始数据为:

HTTP/1.1 404 Not Found
Content-Length: 0
Server: Jetty(6.1.26)

我猜我所选择的端点是错误的。你能否证实这是错误的格式,或者我错过了某种后缀。如果您认为它是正确的那么它必须是我在Web应用程序上的设置有问题。

谢谢,

菲尔

答案

当您创建soapui testrequest时,它应该为您填充端点字段。

您还可以在绿色的“I”图标下运行“示例请求”,至少可以测试您的终端。我不建议编辑这些作为您的实际测试,但我认为很多人确实使用SoapUI。

你问'请求'是什么意思?您应该能够在绿色'I'下右键单击测试请求两个级别,然后选择添加到testcase。之后会有几个对话框,您可以使用默认值。它将创建一个Junit类型的结构:测试套件和测试用例。在此之下是您可以自己执行或作为套件或测试用例的一部分执行的测试步骤。

编辑1:

对我来说听起来不正常。不幸的是,我没有写过任何简单的演示服务,但......

以上是关于SOAP - 不知道我的端点URL是什么的主要内容,如果未能解决你的问题,请参考以下文章

在 net.tcp://url 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的

如何在 Apache Camel 中更改 SOAP Web 服务端点 URL 和 WSDL URL

Apache CXF JMS - SOAP

当我使用wsdl和端点url执行我的curl php请求时获得空白响应

使用 axios 向 SOAP 端点发出请求

使用 CXF 生成 SOAP 1.2 端点的 Java Spring Boot