在J2ME中得到数据
我的项目主要是通过PHP连接ICE得到行情数据并将其转换为XML类型的数据,然后在J2ME中解析XML。
在J2ME中我主要用KXML来解析,主要用到KXML中的KXmlParser.java、XmlPullParser.java、XmlPullParserException.java这三哥类,我自己感觉还是比较简单,J2ME中主要是通过HttpConnection来打开一个连接地址得到数据:
我这里主要写了两个方法来得到数据:
/**
* 主用用来得到数据并设置一些参数
* @param url 得到数据的URL地址
*/
public static Vector getVectorData(String url){
InputStream is = null;
try {
//实例化HttpConnection类
mHttpConnection=(HttpConnection) Connector.open(url);
//设置请求的方法、得到数据的类型
mHttpConnection.setRequestMethod(HttpConnection.GET);
mHttpConnection.setRequestProperty(“Content-Type”, “application/xml”);
mHttpConnection.setRequestProperty(“User-Agent”, “Profile/MIDP-2.0 Configuration/CLDC-1.1”);
mHttpConnection.setRequestProperty(“Content-Language”, “en-US”);
//得到响应的状态
int rc=mHttpConnection.getResponseCode();
if(rc!=HttpConnection.HTTP_OK){
mHttpConnection.close();
}
//得到数据流
is=mHttpConnection.openInputStream();
return Util.getData(is);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 主要用来解析数据流,将其转换为Vector
* @param is 数据流
* @return 返回一个包含了时间,栏目信息列表的一个数组
*/
public static Vector getData(InputStream is) {
KXmlParser parser = new KXmlParser();
try {
//下面主要是对数据流的操作,并且将它转换为utf-8的编码
byte[] b = new byte[1024];
int len = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
while ((len = is.read(b)) != -1) {
dos.write(b, 0, len);
}
byte[] data = baos.toByteArray();
String strxml = new String(data, “utf-8”);
if(strxml.length()>0){
// 必须让xml也” strxml = strxml.substring(strxml.indexOf(“ ByteArrayInputStream bin = new ByteArrayInputStream(strxml.getBytes(“UTF-8”));
parser.setInput(bin, “UTF-8”);
//主要用来判断是否为xml的开头,结尾,标签的开头和结尾
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
//标签开头
case XmlPullParser.START_TAG:
//得到标签的名称
strtag = parser.getName();
if (“fopen”.equals(strtag)) {
//得到xml的数据
myData.setFopen(parser.nextText());
}
break;
//在xml中是标签结尾
case XmlPullParser.END_TAG:
strtag = parser.getName();
break;
}
//主要用来判断是否为xml的开头,结尾,标签的开头和结尾
eventType = parser.next();
}
return vector;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!