从XML删除SOAP Envelope名称空间

时间:2019-08-01 11:38:35

标签: xml rest soap

我正在使用curl在Windows命令提示符下编写以下内容:

curl -i -H "Content-Type:application/xml" -d "<test/>" -X PUT "http://localhost:9092/restapi"

我的应用程序具有以下代码:

public class RestAPI implements Provider<Source>
{
    public static void main(String[] args)
    {
        Endpoint.publish(url, new RestAPI());
    }


    @Resource
    private WebServiceContext wsContext;


    @Override
    public Source invoke(Source request)
    {
        if (wsContext == null)
           throw new RuntimeException("dependency injection failed on wsContext");
        MessageContext msgContext = wsContext.getMessageContext();
        switch (((String) msgContext.get(MessageContext.HTTP_REQUEST_METHOD)).toUpperCase().trim())
        {
            case "PUT":
                return processPut(msgContext, request);
        'etc.
        }
    }

    @Override
    protected Source processPut(MessageContext msgContext, Source request)
    {
        // get the XML as a String
        Transformer transformer;
        try
        {
            transformer = TransformerFactory.newInstance().newTransformer();
            StringWriter stringWriter = new StringWriter();
            transformer.transform(request, new StreamResult(stringWriter));

            System.out.println(stringWriter.toString());
        }
        catch (TransformerException | TransformerFactoryConfigurationError e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return request;
    }
}

我从System.out.println看到的输出如下:

<?xml version="1.0" encoding="UTF-8"?><test xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"/>

什么时候添加了SOAP名称空间,如何删除它? (我正在创建REST API,而不是SOAP API)

1 个答案:

答案 0 :(得分:1)

您正在使用JAX-WS来实现服务-它是用于构建XML SOAP服务。因此,SOAP名称空间将自动添加。如果您打算构建REST服务,请使用 Jersey

之类的JAX-RS实现库