簡體   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