我的应用程序在服务器中查询某些数据,服务器运行相应的SQL语句并获取结果。现在,使用Simple XML API将结果序列化为XML。我的问题是我想将这个xml数据发送回应用程序。
到目前为止,我首先将XML文件保存在服务器上的某个位置,并将其作为URL提供 - http://localhost:8080/abc/123.xml
以下是我使用Simple XML API完成目前的工作方式:
Serializer serializer = new Persister();
GetCard_info_xml getCard_Object = new GetCard_info_xml(received_numbers);
File result = new File("/home/user/workspace/xml_files/GetCard_xml_output/GetCard_xml_output_"+ receivedMobileString +".xml");
try {
serializer.write(getCard_Object, result);
} catch (Exception e) {
e.printStackTrace();
}
在此之后,我要求我的应用程序使用相同的Simple XML API解析URL。像这样:
URL GetCardXmlUrl = new URL("http://10.0.2.2:8080/getcardxml/GetCard_xml_output_"+ mobile +".xml");
URLConnection GetCardXmlConnection = GetCardXmlUrl.openConnection();
InputStream PhonebookInstream = new BufferedInputStream(GetCardXmlConnection.getInputStream());
Serializer PhoneBookSerializer = new Persister();
我意识到这是不合适的,因为xml文件是公共的,因此根本不安全,因为所有数据也变得公开。另外,对我来说,这似乎只是hacky而不是一个合适的解决方案。
如何将整个序列化文件从服务器发送到应用程序,就像使用类似OutputStreamWriter
之类的简单字符串一样?
答案 0 :(得分:1)
这是一个简单的 pseude代码:
Example example = ... // create your data
// Get your writer (or outputstream to write data)
// Those my come from doPost(...) or doGet(...) method
HttpServletResponse response = ...
PrintWriter outWriter = respone.getWriter();
// Serialize to the writer / stream
Serializer ser = new Persister();
ser.write(example, outWriter);
如果您实现类扩展HttpServlet
,您可以从doPost()
/ doGet()
方法的参数获取输出流/编写器:
void doGet(HttpServletRequest request, HttpServletResponse response)
void doPost(HttpServletRequest request, HttpServletResponse response)
现在,您可以使用Writer
(response.getWriter()
)或OutputStream
(response.getOutputStream
)。
Serializer
可以写入两者。