2

我正在使用 Spring 在 jaxb 中工作,尝试使用 WebServiceGatewaySupport 编写自定义解组过程。

我的课在下面。问题在于响应,当我调用以下方法时

getWebServiceTemplate().sendSourceAndReceiveToResult

它崩溃并显示消息“java.lang.IllegalArgumentException:'uri'不能为空”。似乎即使我使用的是 StringResult,它也在尝试解析 xml 并找到 xml/soap 响应错误。

public class WUResultGateway extends WebServiceGatewaySupport{

    private WebServiceTemplate webServiceTemplate;

    private SourceExtractor ratingResponseExtractor = new WUResponseExtractor();

    public WUResultGateway(WebServiceTemplate webServiceTemplate){
           this.webServiceTemplate =   webServiceTemplate;
    }
    private Source marshall( SendRDCResults results ) throws IOException{

        StringResult resp = new StringResult();
        Marshaller marshaller = webServiceTemplate.getMarshaller();
        marshaller.marshal( results, resp );

        return new ResourceSource( new ByteArrayResource( resp.toString().getBytes() ) );
    }

    public Object wuResponse( SendRDCResults results) throws IOException{
        //StringSource source = new StringSource();
        Result result = new StreamResult();
        StringResult strResult = new StringResult();
        boolean flag = getWebServiceTemplate().sendSourceAndReceiveToResult( marshall( results ), strResult );
        return result;
    }

}

在不对来自服务器的响应进行任何更改的情况下,我想以 s String 或简单的 xml 格式获取值而不会出错。任何人都可以帮忙吗?

4

1 回答 1

1

setDefaultUri(webServiceTemplate.getDefaultUri());

最后看起来如下

    public Object wuResponse( SendRDCResults results) throws IOException{
            //StringSource source = new StringSource();
            Result result = new StreamResult();
            StringResult strResult = new StringResult();
            setDefaultUri(webServiceTemplate.getDefaultUri());
            boolean flag = getWebServiceTemplate().sendSourceAndReceiveToResult( marshall( results ), strResult );
            return result;
        }
于 2012-08-28T15:19:07.167 回答