ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:70.42KB ,
资源ID:3548029      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3548029.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(J2ME联网不通运营商网络方案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

J2ME联网不通运营商网络方案.docx

1、J2ME联网不通运营商网络方案J2MEJ2ME连网&不同运营商网络的连网 随着中国移动,联通,电信的先后获得3G牌照,移动软件开发必定会热起来,无论是现在热火朝天的J2ME 版的UCWEB,QQ,还是移动的飞信等都是必须连网的,因此掌握J2ME的网络编程是我们程序员的一门绝技,而通用连接框架则是网络编程的基础。 这篇文章主要介绍1. 通用连接框架的基础知识。2. 中国环境下的网络开发请注意本文假定读者熟悉 J2ME 环境中的 MIDlet 开发。需要在系统中安装 J2ME 开发环境才能编译代码示例,以及 J2ME Wireless Toolkit(WTK) 的安装指导,请参阅文章末尾参考资料

2、的小结。GCF 是一组在 javax.microedition.io 包中定义的接口。图 1 显示了 GCF 的类层次结构。 通用连接框架介绍图 1. 通用连接框架的类层次结构在 GCF 中共定义了七个接口 ,其中 Connection 是根。注意同时提供了对数据包(packet)和流连接的支持。正如您设想的那样,沿着层次结构向下就会发现提供更多功能的接口。例如, StreamConnection 支持输入和输出流, ContentConnection 扩展了 StreamConnection 以支持对流的内容类型、数据长度和编码格式的确定。Connector 类用于在 GCF 中打开类型的连

3、接。下面可以看到 Connector 类中的 open() 方法的格式:Connector.Open(protocol:address;parameters); Open方法会根据你提供的字符串参数进行Connection的绑定。GCF 在支持不同的连接协议方面特别灵活。在请求打开一个连接时, Connector 类使用其 Class.forName() 方法搜索实现了所请求的协议的类。如果找到这个类,就返回一个实现了 Connection 接口的对象。下面是一些常用打开一个Connection的方法:Connector.Open(socket:/:80); /TCP套接字通讯连接建立Conn

4、ector.Open();/通过Http协议数据通信Connector.Open(datagram:/:1000);/数据报套接字通讯建立Connector.Open(file:/makefile.txt);/访问手机文件Connection conn = Connector.open(comm:0; baudrate=5333);/基于串口协议的数据通信连接框架的用法七种创建连接的方法,下面是代码示例public static Connection open(String name) public static Connection open(String name) public stat

5、ic Connection open(String name, int mode, boolean timeouts) public static DataInputStream openDataInputStream(String name) public static DataOutputStream openDataOutputStream(String name) public static InputStream openInputStream(String name) public static OutputStream openOutputStream(String name)C

6、onnector 构建了7个静态的方法,上面方法,具体的相关用法以及参数说明可以查看APIs文档。通讯连接的IO数据流过程基本步骤分别是建立连接、网络通讯、连接关闭。1、建立连接,创建与服务端的连接初始化以及完成连接过程。2、数据通讯,在连接已建立的基础上进行数据的交换以及完成通讯过程。3、完成通讯之后即关闭网络通讯连接,释放资源。使用小秘密:在程序调用Connector.open()相关方法的时候,如果您的J2ME程序是没有经过签名的,系统会弹出一个是否允许的对话框,其实,我们在开发的过程中也可以调用下面的代码进行一些权限的判断,然后做出适当的动作。MIDlet. checkPermissi

7、on(javax.microedition.io.Connector.file.read);MIDlet. checkPermission(javax.microedition.io.Connector.file.write);MIDlet.checkPermission(javax.microedition.io.Connector.http)其他一些权限检查请查看相关的APIs文档。简单用法代码片段/ Create a ContentConnectionString url = ContentConnection connection = (ContentConnection) Conne

8、ctor.open(url);/ With the connection, open a streamInputStream iStrm = connection.openInputStream();/ ContentConnection includes a length methodint length = (int) connection.getLength();if (length != -1)byte imageData = new bytelength;/ Read the data into an arrayiStrm.read(imageData);3 .1 中国的网络环境运营

9、商 代理名称 用法介绍 直连名称 用法 中国移动 CMWAP CMWAP是中国移动的GPRS代理上网。 创建连接的时候,不能直接采用 Connector.open(targetaddress); 而是采用代理的方式进行连接 具体相关的创建代码是代理的方式。 代理地址是:10.0.0.172 代理Header是:X-Online-Host CMNET 3家运营上的直连方式,创建连接跟PC无异。 中国联通 UNIWAP UNIWAP是中国联通退出的一种上网模式。类似于中国移动。具体创建连接的方式跟中国移动类似。 代理地址是:10.0.0.172 代理Header是:X-Online-Host 在处

10、理网关的时候可能会有一些细致的差别,比如在发送Header数据的时候。 UNINET 中国电信 CTWAP CTWAP是 中国电信最近推出的上网方式。到目前为止我还没有找到j2me可以上ctwap的方式,网上只是提到了代理地址是 10.0.0.200,headerkey是啥,该传什么值,暂时还不知道,如果有读者知道的可以联系我(gooogledev) CTNET 3 .2 HttpConnection 介绍我们先来讲解下HttpConnection相关的方法。现在您已经看到 GCF 是如何支持不同类型的连接的,并且开发了我们的第一个连网 MIDlet,现在可以更深入地分析 MIDP 中对 HT

11、TP 的支持。我们将首先从一个更新过的层次结构图开始,它表明了哪个类提供了对 HTTP 连接的支持。图:支持 HTTP 的 GCF 类原来的 MIDP 1.0 规范只要求设备支持 HTTP 连接协议,而更新的 MIDP 2.0 规范要求同时支持 HTTP 和 HTTPS,后者提供了对更安全 style=COLOR: #000000 href= target=_blank安全的网络连接的支持。使用这些协议的 API 分别是 HttpConnection 和 HttpConnection 。除了这些强制性的协议,设备制造商可能会选择支持更多的通信协议,如数据包或者套接字。虽然有时会方便一些,但是您

12、应当了解使用特定于厂商的协议会影响应用程序到其他设备的可移植性。请求和响应协议:HTTP 和 HTTPS 都是请求/响应协议。客户机发送请求,而服务器 style=COLOR: #000000 href= target=_blank服务器发送响应。在继续后面的内容之前,我们将分析客户请求和服务器响应的各个方面。客户请求:客户请求(client request),有时称为请求实体,由以下三个部分组成: 请求方法 头 正文我们将详细讨论这三个部分。请求方法:请求方法(request method)确定数据如何发送给远程资源。可以使用的三种方法是 GET、 POST 和 HEADER 。使用 GET

13、 时,数据是作为 URL 的一部分发送的。使用 POST 时,所有客户机数据都是在与建立连接的请求不同的、单独的流中发送的。 HEADER 请求不向服务器发送任何数据。相反, HEADER 请求只是描述(meta)关于远程资源的信息。用 GET 打开一个 HTTP 连接String url = ?size=large;HttpConnection http = null;http = (HttpConnection) Connector.open(url);http.setRequestMethod(HttpConnection.GET);setRequestProperty(User-Age

14、nt, Openwave);Openwave - 是一个比较出名的Wap浏览器厂商,因此设置这个UA,移动网关一般可以通过。用 POST 打开一个 HTTP 连接String url = ,tmp = test data here;OutputStream ostrm = null;HttpConnection http = null;http = (HttpConnection) Connector.open(url);http.setRequestMethod(HttpConnection.POST);/ Send client bodyostrm = http.openOutputStr

15、eam();byte bytes = tmp.getBytes();for(int i = 0; i 从URL得到文件名intgetHeaderField(intn)通过查询索引得到头字段值StringgetHeaderField(Stringname)通过查询名字得到头字段值longgetHeaderFieldDate(Stringname,longdef)得到作为long型的指定字段(表示日期)intgetHeaderFieldInt(Stringname,intdef)得到作为整数的指定字段StringgetHeaderFieldKey(intn)使用索引得到头字段键StringgetH

16、ost()根据URL得到主机longgetLastModified()得到最后修改的字段值StringgetPort()从URL得到端口StringgetProtocol()从URL得到协议StringgetQuery()得到查询字符串(只对GET请求有效)StringgetRef()得到URL的引用部分StringgetRequestMethod()得到请求方法的当前设置(GET、POST或者HEAD)StringgetRequestProperty(Stringkey)得到一种请求属性的当前设置intgetResponseCode()得到响应码(数字值)StringgetResponseM

17、essage()得到响应消息(文字值)StringgetURL()得到整个URLvoidsetRequestMethod(Stringmethod)设置请求方法(GET、POST或者HEAD)voidsetRequestProperty(Stringkey,Stringvalue)设置请求属性(头信息) 注意点:我们在使用Http的过程中最常用的方法就是getResponseCode(); openInputStream()等操作。HttpConnection的实现原理,并不是在open的时候去连网,而是你做getResponseCode();openInputStream(); openOu

18、tputStream(); 等读写操作的时候才真正的去创建。因此只是调用open()是不会触发连网动作的。HttpConnnection在底层的实现上也是采用TCP Socket的方式进行数据的读写。3 .3 创建GPRS连接在中国目前知道的可以连接成功的有中国移动,跟中国联通,由于移动起步 比较早,相对网关,以及基站方面的建设要好于联通,而且基于移动方面的软件也相对多而且成熟,因此联通在建设GPRS方面就向移动靠拢,原则上来说,联通 是无缝兼容移动的,但是也不保证有细微的差别,读者在开发网络环境下的软件的时候,最后经过两个网络的验证才能保证产品的网络质量。至于电信,由于电信刚 接手移动通信,

19、因此在网络的建设,经验方面相对差点,因此到目前为止,我还没有找到一个办法连接ctwap。这里只介绍cmwap,uniwap连接的创 建方式以及注意事项。打开GPRS Http连接的代码清单 HttpConnection sHttp = (HttpConnection) .Connector.open(http:/10.0.0.172:80); sHttp.setRequestProperty(X-Online-Host,);代码就这么简单,不过这里需要注意的Header的发送。User-Agent - 非常重要的参数,很多网站对这个字段很敏感,如果这个字段发送有误,或者含糊不清,及有可能对方服

20、务器会相应500,或者其他错误。Connection - 向对方服务器请求连接的模式,Close 请求一次就关闭,Keep-Alive 保持连接,原则上说来,keep-alive可以达到最优化的速度,但是也是需要客户端跟服务器同时支持才行。建议采用close模式,这样做就比较稳妥 了。还有其他一些参数,可以参考HTTP相关的协议说明。3 .4 从网络上获取图片 经过上面的基础知识以及中国环境下相关的网络介绍,这一单节,我们来点实战的,我们的Demo将采用HttpConnection方式从网络上获取一张图片,并显示在手机的屏幕上我们在这个Demo中将会讲解其中的要点,具体相关的完整的源代码请点击

21、这下载。下面是相关的实现代码,代码里有相当详细的注释。import javax.microedition.lcdui.*;import java.io.IOException;import javax.microedition.io.HttpConnection;import javax.microedition.io.Connection;import javax.microedition.io.Connector;import java.io.InputStream;import java.io.ByteArrayOutputStream;/* Title: * Description:

22、* Copyright: Copyright (c) 2009* Company: * author not attributable* version 1.0*/public class ImageForm extends Form implements CommandListener Command iHttp = new Command(http, Command.BACK, Command.ITEM);Command iExit = new Command(Exit, Command.EXIT, 1);public ImageForm() super(ShowImage);try jb

23、Init();catch(Exception e) e.printStackTrace();private void jbInit() throws Exception / Set up this Displayable to listen to command eventssetCommandListener(this);/ add the Exit commandaddCommand(iExit);addCommand(iHttp);public void commandAction(Command aCommand, Displayable aDisplayable) /* todo A

24、dd command handling code */if (aCommand = iExit) / stop the MIDletHttpDemo.quitApp();else if(aCommand = iHttp)startRqeusetHttpImage();/* * startReqeustSocketImage */private void startReqeustSocketImage() /* * 执行请求 * */private void startRqeusetHttpImage() /一般来说,操作网络等有阻塞的动作最好是启动一个线程。new Thread() public void run() HttpConnection sHttp = null; InputStream sIs = null;try append(Strart Request);app

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1