JavaME区分访问网址是wml还是html

     要区分访问的网址是wap网站还是www网站,光从网址前缀并不容易区分。虽然百度的www网站为http://www.baidu.com,wap网站为http://wap.baidu.com,但不是所有网站的url都这样规范。例如对时维搜索 http://timewe.net/ ,就不好区分是wap网站,还是www网站。输入网址时不一定带后缀,所以也不好从后缀区分。让我们来看访问http://www.baidu.com和http://wap.baidu.com,报头信息。

对于http://www.baidu.com

报头信息:   content-type: text/html;charset=gb2312

 

对于http://wap.baidu.com

报头信息:  content-type: text/vnd.wap.wml;charset=utf-8

 

所以我们能从content-type来区分返回的网页是www还是wap。

import java.io.IOException;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**
* 获取的全部header信息内容将输出到控制台
* 利用HEAD发送request的sample
* 从控制台输出response
*/
public class HEADTest extends MIDlet
{

/**
* 显示header信息
*/
protected void startApp() throws MIDletStateChangeException
{

open( "http://www.baidu.com/" );
}

protected void pauseApp()
{
}

protected void destroyApp( boolean arg0 ) throws MIDletStateChangeException
{
}

private void open(final String url)
{
Thread th = new Thread()
{

public void run()
{
try
{
HttpConnection con =
( HttpConnection ) Connector.open( url );

//指定HEAD
con.setRequestMethod( HttpConnection.HEAD );

//取得关键的HTTP header信息contentType的值

String sType = "";
sType = aConn.getHeaderField("Content-Type");

System.out.println( sType );

//关闭链接
con.close();
}
catch ( IOException e )
{
e.printStackTrace();
}
}
};
th.start();

}
}

多数情况下,在HTTP header中,包含了文件种类、尺寸大小、文字编码、回复日期、request文件的最后修改时间、以及兑现期限的截止日期等。一般来讲,使用HEAD方法检查其是否对兑现内容进行了新信息的替换。

 

 为使用HEAD,如下所示要在作成的HttpConnection的setRequestMethod方法中,指定HttpConnection的static变量HEAD。

HttpConnection con = (HttpConnection) Connector.open("http://www.baidu.com/");
con.setRequestMethod(HttpConnection.HEAD);

 获取HEAD信息的方法。
 方法  
 String getHeaderField(int index)  取得由indexheader field指定的header field值
 String getHeaderField(String name)  取得name指定的header field值
 String getHeaderFieldKey(int index)  取得index指定的header field名
 long getLength()  取得content-length值
 String getType()  取得content-typeencoding值
 String getEncoding()  取得content-encoding值
 int getResponseCode()  取得应答HTTP的status code
 String getResponseMessage()  取得应答HTTP的信息
 int getHeaderFieldInt(String name,long def)  在int上取得name指定的header field值。错误时,返还def。
 long getHeaderFieldDate(String name, long def)  在long上取得name指定的header field值。错误时,返还def。

你可能感兴趣的:(thread,String,header,url,JavaME,WAP)