Java 在SOAP响应中返回空值的邮递员

Java 在SOAP响应中返回空值的邮递员,java,soap,postman,jax-ws,Java,Soap,Postman,Jax Ws,我对肥皂剧和邮递员都是新手,我想知道我在下面的文章中犯了什么错误。我有一个使用jax ws的java Web服务示例: @WebService(endpointInterface = "Soap1.SOAPInterface") public class SOAPService implements SOAPInterface { public String message(String name) { return "Hello " + name; } } 我使用端点发布了此Web服

我对肥皂剧和邮递员都是新手,我想知道我在下面的文章中犯了什么错误。我有一个使用jax ws的java Web服务示例:

@WebService(endpointInterface = "Soap1.SOAPInterface")
public class SOAPService implements SOAPInterface
{
public String message(String name)
{
    return "Hello " + name;
}
}
我使用端点发布了此Web服务:

public class Publisher 
{
public static void main(String[]args)
{
    Endpoint.publish("http://localhost:9006/Service", new SOAPService());
}
}
现在,当我在客户机中运行它时,它工作得很好

    public static void main(String[] args) throws Exception
    {
    URL url = new URL("http://localhost:9006/Service?wsdl");
    QName qname = new QName("http://Soap1/","SOAPServiceService");
    Service s = Service.create(url,qname);
    SOAPInterface i = s.getPort(SOAPInterface.class);
    System.out.println(i.message("Bob"));
    }
但是,当尝试使用POSTMAN分析SOAP请求/响应时。通过为请求输入以下xml:


上下快速移动

如果在浏览器URI中打开,您将看到JAX-WS为您的服务生成的WSDL。它应该包含以下代码段:

<types>
<xsd:schema>
<xsd:import namespace="http://example.soap.kdv.org/" schemaLocation="http://localhost:9006/Service?xsd=1"/>
</xsd:schema>
</types>

它包含对XML模式的引用,该模式定义了web服务中使用的XML消息的结构。如果您也打开URI(URI可能不同,请检查),您将看到请求和响应消息的定义:

<xs:schema xmlns:tns="http://example.soap.kdv.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://example.soap.kdv.org/">
<xs:element name="message" type="tns:message"/>
<xs:element name="messageResponse" type="tns:messageResponse"/>
<xs:complexType name="message">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="messageResponse">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

它定义了请求消息的以下结构:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:exam="http://example.soap.kdv.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <exam:message>
         <!--Optional:-->
         <arg0>test</arg0>
      </exam:message>
   </soapenv:Body>
</soapenv:Envelope>

测试
在邮递员中尝试此消息,它将返回您想要的结果


另外,我想推荐用于测试web服务的SOAP UI工具。在这个工具中创建新的SOAP项目时,它会导入WSDL并为您生成请求消息。

我使用了您的格式。我使用chrome插件“wizdler”生成请求正文格式,它生成了我上面标记的内容。将“soapenv”添加到每个标记,并将xmlns:namespace=“package”添加到信封而不是标记,解决了这个问题。谢谢