J2ME通过URL访问XML文件并下载XML到本地
(叶全府)J2ME通过URL访问XML文件并下载XML到本地
2009-06-11 14:45
**
* 网络连接 * 固定URL的网络连接 * @param cmnet * true走cmnet false走cmwap * @return返回String类型的XML数据 */ private String connect(boolean cmnet) { try { if (cmnet) { http = (HttpConnection) Connector .open(https://xx.cn/t.xml); } else { http = (HttpConnection) Connector .open(https://10.0.0.3/t.xml); http.setRequestProperty("X-Online-Host", "xx.cn"); } http.setRequestProperty("Content-Type", "application/octet-stream"); http.setRequestProperty("Connection", "Keep-Alive"); http.setRequestMethod(HttpConnection.GET); // 判断是否为连接网络收费提示页面 String content_type = http.getHeaderField("Content-Type"); // 如果是返回移动的拦截页面,则重发. if (content_type.indexOf("wml") != -1) { try { http.close(); } catch (IOException e) { } http = null; // 重新发起一次请求 if (cmnet) { http = (HttpConnection) Connector .open(https://xx.cn/t.xml); } else { http = (HttpConnection) Connector .open(https://10.0.0.3/t.xml); http.setRequestProperty("X-Online-Host", "xx.cn"); } http.setRequestMethod(HttpConnection.GET); } int code = http.getResponseCode(); if (code == 200) {// 返回200 表示连接成功 // 打开输入流,读取数据 InputStreamReader is = new InputStreamReader(http .openInputStream(), "UTF-8"); // 建一StringBuffer,用于保存已读的数据 StringBuffer sb = new StringBuffer(); // 每次读取1K的数据 char[] c = new char[1024]; int k; // 循环读取数据,直到读完 当返回-1时表示流已读完 while ((k = is.read(c)) != -1) { sb.append(c, 0, k); } is.close(); is = null; http.close(); http = null; return sb.toString(); } } catch (Exception e) { e.printStackTrace(); // return null; } finally { if (http != null) { try { http.close(); http = null; } catch (IOException e) { } http = null; } } return null; } |
最后更新:2017-04-02 06:51:20