gpt4 book ai didi

java - XML 阅读器错误 : unexpected character content exception while invoking webservice

转载 作者:行者123 更新时间:2023-11-29 06:19:29 24 4
gpt4 key购买 nike

我正在尝试使用 Java 客户端调用公共(public) Web 服务,但出现以下异常:

deserialization error: XML reader error: unexpected character content: "<?xml version="1.0" ?>
<rankedTermCandidates
xmlns="http://www.nactem.ac.uk/xsd/termine"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nactem.ac.uk/xsd/termine http://www.nactem.ac.uk/software/termine/webservice/termine.xsd"
>

我无法找出我做错了什么。我很想转向 .NET 客户端{我是一名 C# 程序员},但想知道我在这里做错了什么。

调用webservice的方法是:

    private String InvokeNactemWebService(String textToParse) throws Exception
{

String wsdlURL = "http://www.nactem.ac.uk/software/termine/webservice/termine.wsdl";
URL url = new URL(wsdlURL);
String targetNamespace = "urn:termine";
String serviceName = "termine";
String portName = "termine_porttype";
String operationName = "analyze";
QName serviceQN = new QName(targetNamespace, serviceName);
QName portQN = new QName(targetNamespace, portName);
QName operationQN = new QName(targetNamespace, operationName);

String parseResult = "";

try
{
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service service = serviceFactory.createService(url, serviceQN);

Call call = (Call) service.createCall();
call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, "");
call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
call.setTargetEndpointAddress("http://www.nactem.ac.uk:9000/termine");


call.setPortTypeName(portQN);
call.setOperationName(operationQN);

call.removeAllParameters();
call.addParameter("src", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("input_format", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("output_format", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("stoplist", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("filter", XMLType.XSD_STRING, ParameterMode.IN);


Object[] inParams = new Object[] {textToParse, "", "xml", "", ""};

Object result = call.invoke(inParams);
//parseResult = (String) call.invoke(inParams);
//System.out.println(call.invoke(inParams));
return parseResult;
}
catch (Exception e)
{
e.printStackTrace();
Debug.println(e.getMessage(), e.getStackTrace().toString());
}

return parseResult;

}

最佳答案

我怀疑有一个 byte-order-mark在您的 XML 响应中。参见 this SO question了解更多详情。使用 Wireshark 捕获响应或类似的将指示发生了什么。

如果您确实有 BOM,我怀疑您可以安装一个 servlet 过滤器来拦截 web 服务 XML 解析代码之前的响应,并在将其转发之前从原始响应中删除 BOM。

关于java - XML 阅读器错误 : unexpected character content exception while invoking webservice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com