`
mfcai
  • 浏览: 409155 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅析J2ME终端使用http协议进行网络通信

阅读更多
1.http协议
HTTP协议在发送时可以根据传输数据的方式一般分为get、post两种方法。Get方法和post方法的区别是传送数据时,数据所放置的位置不同。Get方法把参数放置在协议内部的请
求行中。而post方法将提交的参数放置在实体数据部分中。
HTTP协议要分为三个部分:
  a) 请求行/响应行:该部分只有一行,包含三个部分:请求方法 请求资源 使用的HTTP协议的版本。例如:get /index.html http/1.1, 其中get为请求方法,/index.html是请求的资源,http/1.1是指客户端支持的HTTP协议的版本。
  b) 头信息:头信息部分主要传输服务器或者客户端的一些设定信息,可以有任意多个,传输时使用“名称:值”的形式,如下:
     conn.setRequestProperty("Content-Type",
     "application/x-www-form-urlencoded");
   conn.setRequestProperty("User-Agent",
     "Profile/MIDP-1.0 Configuration/CLDC-1.0");
   conn.setRequestProperty("Content-Language", "en-US");
   conn.setRequestProperty("Accept", "application/octet-stream");
   conn.setRequestProperty("Connection", "close");
 c) 实体数据


2.使用J2ME进行无线网络编程
    定义在javax.microedition.io类中的抽象网络和文件输入输出框架称为通用连接框架(Generic Connection Framework,简称GCF)。GCF定义了一套有关抽象化的内容来描述不同的通信方法。最高级的抽象被称作连接(Connection),还声明了六个接口(四个是直接的,两个是间接的)。这七个接口就构成了J2ME的CLDC的一部分,CLDC是大多数的能使用Java的无线设备使用的配置。设计这个配置的目的就是为所有的CLDC设备(手提电话,双向传呼机,低档的PDA等等)提供公用的网络和文件输入输出能力。
   由于移动终端自身的限制,所支持的网络协议非常有限,仅限于HTTP,Socket,UDP等几种协议。不同的厂家可能还支持其他网络协议,但是,MIDP 1.0规范规定,HTTP协议是必须实现的协议,而其他协议的实现都是可选的。因此,为了能在不同类型的手机上移植,所以在移动应用开发时应尽量采用HTTP作为网络连接的首选协议,这样还能重用服务器端的代码。
    GCF的关键在于把所有的连接都按照url来处理,这样容易从Connector中得到不同类型的连接,如HttpConnection和SocketConnection.


3.J2ME使用http协议进行网络通信
3.1.发送一个HTTP GET请求
1)使用Connector类打开一个到服务器的连接
2)得到HttpConnection上的一个DataInputStream,用来读取服务器的响应数据。
3)将读取到的服务器的响应数据放入缓存
      
public String sendHttpGet(String url) throws IOException {
  HttpConnection hcon = null;
  DataInputStream dis = null;
  String message = "";
  try {
   hcon = (HttpConnection) Connector.open(url);
   dis = new DataInputStream(hcon.openInputStream());
   int ch;
   message = dis.readUTF();
  } finally {
   if (hcon != null)
    hcon.close();
   if (dis != null)
    dis.close();
  }
  return message;
 }

使用GET方式发送数据的时候数据只能通过URL传送到服务器,数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使
用“&”连接;如:http://localhost:8080/mdbServer/servlet/myServlet?userName=staratsky&password=staratsky,
使用GET方式发送数据,参数还要受到URL长度的限制,不能超过256字
Get是HttpConnection 的默认方式
使用GET方式发送数据,用户可以在浏览器上直接看到提交的数据,数据安全性不高

3.2.发送一个HTTP POST请求
处理过程和发送一个HTTP GET请求的处理非常类似,但稍稍复杂些。步骤如下:
1)设置HttpConnection的请求方式为
2)使用Connector类打开一个到服务器的连接,打开时将连接设置为Connector.READ_WRITE 方式,允许客户端可以通过连接在服务器上读和写
3)得到一个用于现有的HTTP连接的DataOutputStream对象。
4)向指定的DataOutputStream写数据
5)得到HttpConnection上的一个DataInputStream,用来读取服务器的响应数据。
3)将读取到的服务器的响应数据放入缓存
public String sendHttpGet(String url,String requestBody) throws IOException {
  HttpConnection hcon = null;
  DataInputStream dism = null;
  OutputStream os = null;
  String message = "";
  try {
   // Connector.READ_WRITE参数允许客户端可以通过连接在服务器上读和写。
   hcon = (HttpConnection) Connector.open(url, Connector.READ_WRITE);
   // 设置HttpConnection对象使用的请求方法为POST
   hcon.setRequestMethod(HttpConnection.POST);
   // 得到一个用于现有的HTTP连接的OutputStream对象。
   os = hcon.openOutputStream();
   byte[] byteRequest = requestBody.getBytes();
   // 向指定的OutputStream写数据
   os.write(byteRequest);
   // 得到Http响应代码
   int rc = hcon.getResponseCode();
   // 正常响应
   if (rc == HttpConnection.HTTP_OK) {
    // 构建输入流
    dism = new DataInputStream(hcon.openInputStream());
    // 读取服务器返回的字节流
    String result = dism.readUTF();
    dism.close();
    // 判断
    if (result.equals("true")) {
     // 显示登录成功
     message = "success";
    } else if (result.equals("false")) {
     message = "fail";
    }
   }
  } finally {
   if (hcon != null)
    hcon.close();
   if (dism != null)
    dism.close();
   if (os != null)
    os.close();
  }
  return message.toString();
 }

本文欢迎转载,转载请注明出处和作者
分享到:
评论

相关推荐

    j2me网络类http协议传输

    j2me网络类,http协议传输j2me网络类,http协议传输j2me网络类,http协议传输

    j2me http通信demo

    在Java 2 Micro Edition ...总的来说,J2ME HTTP通信涉及到了网络连接、请求构造、数据交换和响应解析等多个环节,是构建联网应用的基础。这个demo应该包含了这些方面的实例,可以帮助开发者快速上手J2ME的HTTP通信。

    j2me基础知识之HTTP协议

    在J2ME应用中,HTTP(HyperText Transfer Protocol)协议是实现设备间通信的重要方式,尤其在进行网络数据交换时。本文将深入探讨J2ME中的HTTP协议使用,帮助开发者掌握如何通过HTTP进行手机之间的通讯。 **1. HTTP...

    基于J2ME的移动支付系统终端应用的实现

    基于J2ME的移动支付系统终端应用的实现

    java-compcation.rar_J2ME 源码_j2me_手机移动通信_移动通信

    在这个例子中,"Java移动通信程序设计"可能包括使用J2ME的MIDP API来实现基本的通信功能,如发送和接收短信(SMS)、拨打电话、或者访问网络数据。可能还涵盖了如何使用J2ME的网络类,如`HttpConnection`和`...

    J2ME里面的线程和网络

    7. **异步网络操作**:为避免阻塞主线程,J2ME鼓励使用回调或事件驱动的方式处理网络请求,如使用ProgressListener监听下载进度。 8. **网络安全**:J2ME支持SSL/TLS加密,以确保数据在网络中的安全传输。 在实际...

    j2me 与jsp通信

    标题中的“j2me 与jsp通信”涉及的是在移动设备上使用Java 2 Micro Edition (J2ME)平台与服务器端的JavaServer Pages (JSP)进行数据交互的技术。J2ME通常用于开发功能手机和嵌入式系统的应用程序,而JSP则是Web开发...

    j2me网络编程大全

    ### J2ME网络编程大全:深入理解HTTP与Socket通信机制 #### 一、引言 J2ME(Java 2 Micro Edition)是Sun Microsystems为嵌入式设备和移动终端提供的Java平台版本。随着移动互联网的发展,J2ME在网络通信方面的...

    J2ME_移动通信介绍

    J2ME提供了通过无线网络进行数据传输的能力,这在移动通信中非常重要。MIDP的Connection API允许应用程序打开和管理网络连接,可以实现HTTP、WAP等多种协议的通信。 6. **资源管理** 移动设备的资源有限,因此...

    PDA.rar_PDA_j2me_j2me 图片_j2me 文件_j2me 通信

    本文将深入探讨如何使用J2ME进行通信录管理、文件操作以及图片处理,同时介绍一个名为"PDAPDemo"的示例项目。 首先,J2ME是Java Micro Edition的缩写,它是一种轻量级的Java平台,设计用于资源有限的嵌入式设备,如...

    J2ME联网不同运营商网络方案

    - 例如,`Connector.open("socket://www.example.com:80")`用于建立TCP套接字连接,`Connector.open("http://www.example.com")`则通过HTTP协议进行通信。 4. **连接的生命周期** - 建立连接:调用`Connector....

    J2ME API 2.0 J2ME使用手册 J2ME帮助文档

    **J2ME API 2.0 - J2ME使用手册 - J2ME帮助文档** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的设备如移动电话、智能手表和家用电器等设计。J2ME API 2.0 提供了在这些小型设备上开发应用...

    J2ME网络编程以及网络游戏的实现

    1. **通信协议**:网络游戏通常采用TCP或UDP协议进行通信,TCP提供可靠的连接,UDP则适合低延迟的数据传输。 2. **服务器架构**:可以是Client/Server模型,所有客户端连接到同一个服务器,或者分布式服务器架构,...

    线程池技术在J2ME网络通信中的应用研究

    ### 线程池技术在J2ME网络通信中的应用研究 #### 引言与背景 随着嵌入式设备及移动通信技术的迅速发展,尤其是智能手机和平板电脑的普及,移动设备的应用范围日益广泛,从基本的通讯工具演变为集信息获取、娱乐等...

    详解基于J2ME平台下SOAP协议的应用

    在 J2ME 平台上实现 SOAP 协议的主要挑战在于 J2ME 的资源限制,包括内存、CPU 速度以及网络连接能力。由于 J2ME 平台通常不直接支持完整的 XML 处理库和 HTTP 客户端库,因此需要找到轻量级且高效的解决方案。 1. ...

    论文研究-基于J2ME的Socket网络通信加密技术研究 .pdf

    基于J2ME的Socket网络通信加密技术研究,张宇敏,杨杰,随着3G技术的高速发展,手机上网已经成为一种时尚,使用手机上网的人逐渐增多,而手机网络安全问题也随之而来,自然手机通信的安�

    J2me 手机发送短信示例

    总的来说,J2ME手机发送短信示例是了解移动开发和通信API的一个重要起点。通过这个示例,开发者不仅可以学习到J2ME的基础,还能掌握如何利用特定API与硬件进行交互,从而实现更复杂的功能。在实际应用中,这样的技术...

    J2ME开发 J2ME开发 J2ME开发

    2. **MIDP (Mobile Information Device Profile)**:MIDP是J2ME中最常见的框架,用于开发移动应用程序,包括用户界面组件和网络通信功能。 3. **CLDC (Connected Limited Device Configuration)**:这是J2ME的基础...

    j2Me 实例 笔记源码

    5. **类与方法**:源码中可能包含对J2ME API的多种使用,如网络通信(利用HttpConnection和DataInputStream/OutputStream进行HTTP请求),文件I/O(FileConnection API),以及线程管理(Thread类)。 6. **事件...

    j2me 网络 精灵 原理设计

    在J2ME网络部分,资料可能会涵盖基本的TCP/IP通信、HTTP协议的应用,以及如何通过Socket编程实现设备间的通信。学习者将了解到如何使用J2ME的 javax.microedition.io 包来创建连接,发送和接收数据,这对于开发实时...

Global site tag (gtag.js) - Google Analytics