繁体   English   中英

Android-将XML模式发布到PHP服务器API

[英]Android - Post XML schema to PHP server API

我正在尝试将XML模式解析到我的服务器。

URL obj = new URL(url);
URLConnection uc = obj.openConnection();
HttpURLConnection conn = (HttpURLConnection) uc;
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "text/xml");
conn.setRequestProperty("Content-Length", Integer.toString(filecontent.length())); 
conn.setRequestProperty("Content-Encoding", "gzip");

OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
writer.write(filecontent);
writer.close();

其中filecontent是我的XML模式(字符串格式)。 如果我尝试读取服务器的响应

BufferedReader in = new BufferedReader(new 
InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();

while ((inputLine = in.readLine()) != null ) {
     response.append(inputLine);
    }
in.close();

我的应用程序将挂起,并且可以正常完成,但响应为空。 不解析/编写任何内容将允许我读取服务器的响应,并且不会挂起。 该视图以XML格式提供,这给了我XML解析错误,并在CDATA中出现EXCEPTION:消息“字符串无法解析为XML”的异常“ Exception”。

我有一个肯定能正常工作的C#版本代码,并将我的Java代码与C#代码进行了比较,除了一件事情外,它看起来非常相似:C#用XmlWriter编写了一个XmlDocument内容供作者使用,我不相信Java有能力做到。 如果需要,我可以在此处粘贴C#代码。

有人知道怎么了吗? 它是XML模式的格式错误,还是服务器不接受它,或者它不接受字符串? 还是不等同于C#代码? 我不知道为什么它不起作用,任何帮助将不胜感激。

“其中filecontent是我的XML模式(采用String格式)”-表示您的数据是未压缩的文本,但是您告诉服务器这行使用gzip编码-

conn.setRequestProperty("Content-Encoding", "gzip");

服务器可能会尝试解压缩您的字符串并最终陷入混乱状态。 尝试删除该行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM