我正在使用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)
答案 0 :(得分:1)
您正在使用JAX-WS
来实现服务-它是用于构建XML SOAP
服务。因此,SOAP名称空间将自动添加。如果您打算构建REST服务,请使用 Jersey