我正在使用Apache XML-RPC库使用我的XML-RPC服务,但作为对XML-RPC的响应,XML-RPC具有垃圾字符,因此库无法解析结果
这里,是我的XML-RPC程序:
import java.net.URL; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; public class XMLRpcExample { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub XmlRpcClientConfigImpl cf = new XmlRpcClientConfigImpl(); cf.setServerURL(new URL("/xmlrpc/object")); cf.setBasicUserName("admin"); cf.setBasicPassword("m_demo"); cf.setConnectionTimeout(60000); XmlRpcClient client = new XmlRpcClient(); client.setConfig(cf); Object[] params = new Object[] {"dbname",1,"m_demo","res.partner","partner_sync_openerp","kapil5drd@bxiz","22"}; String s =(String)client.execute("execute", params); System.out.println(s); } }
但是我得到了一个错误的回应,看起来是这样的:
[Fatal Error] :16:16: An invalid XML character (Unicode: 0xc) was found in the element content of the document. Exception in thread "main" org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse server's response: An invalid XML character (Unicode: 0xc) was found in the element content of the document. at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:202) at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:165) at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:125) at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69) at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56) at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167) at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:137) at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:126) at XMLRpcExample.main(XMLRpcExample.java:21) Caused by: org.xml.sax.SAXParseException; lineNumber: 16; columnNumber: 16; An invalid XML character (Unicode: 0xc) was found in the element content of the document. at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1237) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:551) at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:200) ... 8 more
XML-RPC在响应中提供了一个垃圾字符。
并且库本身无法解析响应。
所以这意味着,Apache XML-RPC库是它自己无法解析响应的。
有人能帮我做我需要做的事吗?
我也试图通过互联网解决这个问题,但我无法解决它。
这是参数的工作示例,可以帮助您
处理程序类:
public class Handler {
public String execute(String dbName, Integer i, String a, String b, String c, String d, String e){
System.out.println("Got inputs: "+dbName+", "+i+", "+a+", "+b+", "+c+", "+d+", "+e);
return "<?xml version=\"1.0\"> <test>testmail@testdomain.com</test>";
}
}
可以使用phm添加更多这样的处理程序。addHandler(“handler”,handler.class) 到服务器代码。可以将更多方法添加到此类中,并可以从客户端调用这些方法。
XMLRPC服务器:
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
public class Server {
private static final int port = 8080;
public static void main(String[] args) throws Exception {
WebServer webServer = new WebServer(port);
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.addHandler("handler",Handler.class);
xmlRpcServer.setHandlerMapping(phm);
XmlRpcServerConfigImpl serverConfig =
(XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
webServer.start();
}
}
XMLRPC客户端:
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import java.net.URL;
public class Client {
public static void main(String args[])throws Exception{
XmlRpcClientConfigImpl cf = new XmlRpcClientConfigImpl();
cf.setServerURL(new URL("http://localhost:8080/xmlrpc/object"));
cf.setBasicUserName("admin");
cf.setBasicPassword("m_demo");
cf.setConnectionTimeout(60000);
XmlRpcClient client = new XmlRpcClient();
client.setConfig(cf);
Object[] params = new Object[] {"dbname",1,"m_demo","res.partner","partner_sync_openerp","kapil5drd@bxiz","22"};
String s =(String)client.execute("handler.execute", params);
System.out.println(s);
}
}
在阅读了Apache Flume及其在处理客户端事件方面提供的好处之后,我决定是时候开始更详细地研究这个问题了。另一个很大的好处似乎是它可以处理Apache Avro对象:-)然而,我很难理解Avro模式是如何用来验证收到的Flume事件的。 为了帮助更详细地了解我的问题,我在下面提供了代码片段; 出于这篇文章的目的,我使用了一个示例模式,定义了一个包含2个字段的嵌套记录。 在我的Java项目中,
我需要从某个来源读取数据流(在我的情况下是UDP流,但这无关紧要),转换每条记录并将其写入HDFS。 使用Flume或Flink有什么区别吗? 我知道我可以将 Flume 与自定义拦截器一起使用来转换每个事件。 但我是 Flink 的新手,所以对我来说,看起来 Flink 也会这样做。 选哪个比较好?性能有区别吗? 拜托,救命啊!
是否有一个地方我们可以快速引用和查看Apache beam和运行时环境(Flink、Spark等)之间的版本兼容性。我正在艰难地学习它:(.不确定我的问题有多少是由版本错误造成的。 目前我正在使用Beam 2.4.0并查看flink runner pom(https://search.maven.org/#artifactdetails%7corg.apache.Beam%7cbeam-runne
我正在尝试使用Apache Camel创建en RESTendpoint。我已经有了一个返回JSON内容的REST服务,我希望这个endpoint能得到它。我的问题是,我不知道构建Camel路由时发生了什么...目前,它什么也不做。这是我的代码: 我正在端口上的本地Tomcat上运行我的REST服务,我的完整URL是 /ContextServices/rest/ContextServices/do
Apache Spamassassin是一个集成到cPanel中的软件,有助于防止在您的邮箱中收到垃圾邮件。 它有助于防止您的邮箱被垃圾邮件淹没。 启用Apache Spamassassin后,它会按垃圾邮件分数对每封邮件进行评级。 您可以根据垃圾邮件分数选择要自动删除的垃圾邮件。 如果您选择垃圾邮件分数为5的自动垃圾邮件删除,则将自动删除所有垃圾邮件分数为5或更高的电子邮件。 启用或禁用Apac
学习如何在Java编程中使用Tika。 以下是示例 - 如何使用java从PDF中提取内容。 如何使用java从ODF中提取内容。 如何使用java从Excel工作表中提取内容。 如何使用java从文本文档中提取内容。 如何使用java从XML文档中提取内容。 如何使用java从HTML文档中提取内容。 如何使用java从java .class文件中提取内容。