冷月葬花魂 发表于 2015-1-18 11:07:06

发布一篇Java ME使用计划指南之联网重定向

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来展现。

仓酷云 发表于 2015-1-20 14:45:28

是一种使用者不需花费很多时间学习的语言

兰色精灵 发表于 2015-1-28 10:29:15

Java是一种计算机编程语言,拥有跨平台、面向对java

再现理想 发表于 2015-2-5 14:08:46

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

admin 发表于 2015-2-12 03:11:35

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

愤怒的大鸟 发表于 2015-3-2 21:22:43

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

小女巫 发表于 2015-3-11 06:24:50

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

再见西城 发表于 2015-3-17 22:10:32

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

爱飞 发表于 2015-3-25 03:49:02

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
页: [1]
查看完整版本: 发布一篇Java ME使用计划指南之联网重定向