|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
HTTP1.1协定同意Web服务器一时改动资本的地位,也就是说你会见的资本在别的一个地点。这时候候服务器前往的呼应代码是302,而新的地点寄存在Header中,Header的称号是Location。一般情形下,客户端扫瞄器应当指向一时的会见地点。可是,挪动终端设备差异很年夜,在处置302前往码的时分,设备之间的举动差别很年夜。
上面的代码能够用来处置重定向成绩,可是在部分设备中会招致使用程序堕落。
Connectionc=(HttpConnection)Connector.open(uri);
intstatus=c.getResponseCode();
Stringnew_uri=c.getHeaderField("Location");//new_uriisnullonsomedevices
if(status==302){
c.close();
c=(HttpConnection)Connector.open(new_uri);//Breakshere
}
因为重定向是HTTP1.1的特征,那末一切1.1兼容的设备都必要思索这个成绩。上面先容怎样办理这个成绩。
现实证实在某些设备上,底层的收集协定栈处置重定向的成绩,302呼应码告知使用程序外部的处置流程。使用程序应当守候直到呼应码即是302。可是有些设备不克不及准确地从呼应中剖析出Location字段,如许Location字段的内容是null,呼应码存储在了呼应的内容当中。有履历的工程师会接纳上面的办理举措。
1)剖析呼应,在Location大概呼应的内容中查找新地点,假如找到的话封闭之前的毗连,转向新的毗连。
2)假如甚么也没有找到的话,那末守候10-1000ms,直到形态码从302变化为200。即刻处置呼应,看成没有毛病产生。
上面的代码可以很好的办理重定向的成绩,供人人参考和完美。
Connectionc=(HttpConnection)Connector.open(uri);
intstatus=c.getResponseCode();
Stringredirection=httpConnection.getHeaderField("Location");
if(status==HttpConnection.HTTP_TEMP_REDIRECT){
if(redirection!=null){
//ThisthestandardHTTP1.1behaviour,moveontotheredirectionuri(basicallyrestartingagain).
}else{
//ParsethecontentoftheHTTPresponse,ifany.
//Lookupfora"Location"header,iffound,setvaluetotheredirectionvariable
if(redirection!=null){
//Sincelocationwasfound,fallbacktothestandardbehaviour.
}else{
longbegin_wait=System.currentTimeMillis();
while(System.currentTimeMillis()-begin_wait<1000||response!=200){
sleep(100);
response=httpConnection.getResponseCode();
};
if(response==200){
//Onceagainwerebackontracks,continueprocessingasifnoerrorhaseverhappen
}else{
//Herewerereallyhopeless.Eithertheserverdidprovidedavalidredirectionuri,
//orthedevicedidnotpreservedit.Thebestoptionisprobablytofailbythrowinganexception.
};
};
};
}else//Handleothererrorcodeshere
};
//Handlesuccesshere(status==200)
您还能够懂得一下Http协定的细节,http://www.ietf.org/rfc/rfc2616.txt。本文是笔者在浏览SUN的手艺文章的时分编译的。您能够经由过程上面的地点浏览原文,也接待您编译其他的好文章,配合增进国际JavaME手艺的开展。
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。 |
|