j2me如何读取网上资源文件例如文本文件,图形文件。
例如,读取www.kingdart.cn/jaccount/imobile.png 转换为Image
又例如:读取www.kingdart.cn/jaccount/readme.txt 转换为String
只在模拟器上成功我也会,要求是真机上成功!
搞了我二天了,读到的是一些xml的文本,根本不沾边!
private final static String proxy;// = "http://10.0.0.172:8080/"; private final static String X_ONLINE_HOST = "X-Online-Host"; private final static String KINGDART_DOMAIN = "http://www.kingdart.cn:80/"; HttpConnection sc = null; InputStream is = null; FieldInputStream fs = null; try { if(midlet.proxy != null){ sc = (HttpConnection)Connector.open(midlet.proxy + KINGDART_DOMAIN + "jaccount/readme.txt", Connector.READ, true); sc.setRequestProperty(X_ONLINE_HOST, KINGDART_DOMAIN + "jaccount/readme.txt"); }else{ sc = (HttpConnection)Connector.open(KINGDART_DOMAIN + "jaccount/readme.txt", Connector.READ, true); //sc.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0"); //sc.setRequestProperty("Content-type", "text/plain"); //image/x-png int rc = sc.getResponseCode(); if (rc != HttpConnection.HTTP_OK) { throw new IOException("HTTP response code: " + rc); } is = sc.openInputStream(); // ... 省略, 没有异常抛出,但读出一片垃圾(一个xml的文件头)而不是所要求的文件
sc = (HttpConnection)Connector.open(KINGDART_DOMAIN + "jaccount/readme.txt");
sc.setRequestMethod(HttpConnection.GET);
int rc = sc.getResponseCode();
if (rc != HttpConnection.HTTP_OK) {
throw new IOException("HTTP response code: " + rc);
is = sc.openInputStream();
{
private HttpConnection conn;
private static String url="http://www.kingdart.cn:80/jaccount/readme.txt";
private InputStream is;
public HttpTest(String name)
{
super(name);
// TODO Auto-generated constructor stub
}
protected void run()
{
byte[] buf=new byte[0];
String text="";
try
{
conn=(HttpConnection)Connector.open(url,Connector.READ, true);
conn.setRequestMethod(HttpConnection.GET);
int rc = conn.getResponseCode();
is=conn.openInputStream();
buf = new byte[300];
is.read(buf);
text=new String(buf,"UTF-8");
} catch (IOException e)
{
appendPrint(e.getMessage());
e.printStackTrace();
}
appendPrint(text);
}
protected void tearDown()
{
}
}
我在我的机器上run了以上代码,WTK上,一点问题没有,都读出来了。text里面就是那个文件的内容,我只读了300字节的。
返回的内容是:
<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD/WML 1.1//EN"....等内容
返回的是移动资费页面!
需要想办法将这个页面忽略掉
由于我返回的是text文件,我方法是
while(true){ if(sc != null){ sc.close(); } sc = (HttpConnection)Connector.open(url,Connector.READ, true); sc.setRequestMethod(HttpConnection.GET); if(sc.getHeaderField("Content-Type").equals("text/plain")){ break; } if(++i > 5){ throw new IOException("Reach max connection count!"); } }
你所说的cmnet和cmwap我都试过了,我这个地方都是一样的,都会有资费提醒。
无论如何,问题应该解决了,感谢ralphwho的积极参与,感谢所有关心这个问题的人!
多谢!