当前位置: 首页 > 知识库问答 >
问题:

来自捷米特的 SOAP/XML 请求的问题

韦睿
2023-03-14

我对Jmete有点陌生,我正在尝试在Jmete上做一个简单的SOAP/XML-RPC请求。我使用了我在互联网上找到的一个示例代码,看起来工作得很好(至少在Chrome使用Wizlet似乎没有问题),但是当我使用在Jmete中的元素上生成插件的肥皂请求时……那就不同了。如果有人能告诉我这个问题,那就太棒了。

这是WSDL的代码:

 <wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://jee.javapapers.com" xmlns:intf="http://jee.javapapers.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://jee.javapapers.com">
<!--
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)
-->
<wsdl:types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://jee.javapapers.com">
        <element name="animalType">
            <complexType>
                <sequence>
                    <element name="animal" type="xsd:string"/>
                </sequence>
            </complexType>
        </element>
        <element name="animalTypeResponse">
            <complexType>
                <sequence>
                    <element name="animalTypeReturn" type="xsd:string"/>
                </sequence>
            </complexType>
        </element>
    </schema>
</wsdl:types>
<wsdl:message name="animalTypeResponse">
    <wsdl:part element="impl:animalTypeResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="animalTypeRequest">
    <wsdl:part element="impl:animalType" name="parameters"/>
</wsdl:message>
<wsdl:portType name="AnimalTypeService">
    <wsdl:operation name="animalType">
        <wsdl:input message="impl:animalTypeRequest" name="animalTypeRequest"/>
        <wsdl:output message="impl:animalTypeResponse" name="animalTypeResponse"/>
    </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AnimalTypeServiceSoapBinding" type="impl:AnimalTypeService">
    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="animalType">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="animalTypeRequest">
            <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="animalTypeResponse">
            <wsdlsoap:body use="literal"/>
        </wsdl:output>
    </wsdl:operation>
</wsdl:binding>
<wsdl:service name="AnimalTypeServiceService">
    <wsdl:port binding="impl:AnimalTypeServiceSoapBinding" name="AnimalTypeService">
        <wsdlsoap:address location="http://localhost:8082/WebServicesAnimals/services/AnimalTypeService"/>
    </wsdl:port>
</wsdl:service>
</wsdl:definitions>

这是我发送的请求和响应错误。

网址:http://localhost:8082/WebServicesAnimals/services/AnimalTypeService?WSDL

主体:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <animalType xmlns="http://jee.javapapers.com">
            <animal>Lion</animal>
        </animalType>
    </soapenv:Body>
</soapenv:Envelope>

回应:

<?xml version="1.0" encoding="UTF-8"?>
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <soapenv:Fault>
   <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
   <faultstring>no SOAPAction header!</faultstring>
   <detail>
    <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">WBFINF05</ns2:hostname>
   </detail>
  </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>

共有1个答案

段干河
2023-03-14

我认为至少有两个问题:

  • 为什么要将请求发送到以?WSDL,你应该使用:

http://localhost:8082/WebServicesAnimals/services/AnimalTypeService

  • 错误表示您没有SOAPAction。如果确认未设置,请添加标头管理器并将soapAction设置为“”

最后,根据本教程,您应该使用常规HTTP REquest而不是SOAP/XML-RPC Request:

  • https://jmeter.apache.org/usermanual/build-ws-test-plan.html
 类似资料:
  • 我尝试通过Java执行一个SOAP请求并获得SOAP响应,然后从JSP页面调用它。我研究了许多网站,尝试了许多方法,但似乎无法让它工作。 我使用一些wsdl来测试http://www.webservicex.net/australianpostcode.asmx?wsdl 我一直收到这个错误 java.io.ioException:服务器返回HTTP响应代码:500的URL:HTTP://www.

  • 问题内容: 是否可以在JAX-RS下以REST方法访问Request对象? 我刚刚发现 问题答案: 在JAX- RS上,必须使用@Context注释Request参数: 您也可以选择注入: UriInfo HttpHeaders 安全上下文 HttpServletRequest

  • 我正在使用jmeter,我对它非常陌生,并且有最低的编程背景。我目前使用2个采样器:a)soap请求b)soap xml rpc请求。 通过使用soap请求采样器,我可以轻松地加载wsdl文件并继续测试。由于EndpointDispatcher中的ContractFilter不匹配,接收方无法处理带有Action“”的消息。这可能是由于合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之

  • 我正在编写一个具有交叉源配置的API 我的websecurity配置有 控制器类 身份验证过滤器检查 匹配。匹配总是变假 我是不是漏掉了什么? 我添加了什么额外的参数吗? 期待着迅速的回应。

  • 我正在使用最新版本的JMeter,并试图从JMeter发出POST请求,但我无法看到更改HTTP方法的下拉列表。你能告诉我为什么我看不到下拉列表吗? 请在下面找到JMeter的屏幕截图。它没有用于指定HTTP方法的下拉列表。

  • 我正在尝试测试我的项目的 Web 服务。Web 服务接受 SOAP 请求并提供适当的响应。 在JMeter中,我选择了SOAP/ XML-RPC请求。它对我来说完全没问题,给了我正确的反应。然而,在我的测试范围内,我有超过100个web服务,我必须在不同的环境中测试它们。将SOAP/ XML-RPC示例中的URL值改为指向不同的env是非常麻烦的工作。对于SOAP/XML-RPC请求,我们有类似H