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

用J2ME来拜访WebService 续一

阅读更多

继续我们上个例子 , 完成J2ME端代码的编写. 

 

我们的那个MIDlet继承了Runnable接口,  所以可以在程序中使用另外一个线程来访问WebService. (这点很关键, 有些手机在实现某些操作时就必须用多线程的方式来执行, 至少我的索爱是这样. 例如调用WMA来收发短信, 开启手机的摄像头等等...)

 

现在我们就来编写用来访问WebService的接口和实现类.

 

package com.joey.j2me.service;

public interface UserService extends java.rmi.Remote {
    public java.lang.String request(java.lang.String username,java.lang.String password)
        throws java.rmi.RemoteException;
}

 

一个非常简单的接口, 下面我们来创建它的实现类.

 

package com.joey.j2me.service.impl;

import javax.microedition.xml.rpc.ComplexType;
import javax.microedition.xml.rpc.Element;
import javax.microedition.xml.rpc.Operation;
import javax.microedition.xml.rpc.Type;

import javax.xml.namespace.QName;
import javax.xml.rpc.JAXRPCException;

import com.joey.j2me.service.UserService;


public class UserServiceBean implements UserService, javax.xml.rpc.Stub {

    protected static final QName _qname_UserName = new QName("", "username");
    protected static final QName _qname_PassWord = new QName("", "password");
    protected static final QName _qname_result = new QName("", "returnText");
    protected static final QName _qname_request = new QName("http://cxf.joey.com/", "login");
    protected static final QName _qname_requestResponse = new QName("http://cxf.joey.com/", "loginResponse");
    protected static final QName _qname_wsdl_request = new QName("http://cxf.joey.com/", "login");
    protected static final Element  _login;
    protected static final Element  _loginResponse;

    static {
        Element username =  new Element(_qname_UserName, Type.STRING, 1, 1, true);
        Element password =  new Element(_qname_PassWord, Type.STRING, 1, 1, true);

        ComplexType _complexType_request;
        _complexType_request = new ComplexType();
        _complexType_request.elements = new Element[2];
        _complexType_request.elements[0] = username;
        _complexType_request.elements[1] = password;
        _login = new Element(_qname_request, _complexType_request);
        

        Element _ReturnText = new Element(_qname_result, Type.STRING, 1, 1, true);
        ComplexType _complexType_requestResponse;
        _complexType_requestResponse = new ComplexType();
        _complexType_requestResponse.elements = new Element[1];
        _complexType_requestResponse.elements[0] = _ReturnText;
        _loginResponse = new Element(_qname_requestResponse, _complexType_requestResponse);
    }

    private String[] _propertyNames;
    private Object[] _propertyValues;

    public UserServiceBean () {
        _propertyNames = new String[] { ENDPOINT_ADDRESS_PROPERTY };
        _propertyValues = new Object[] { "http://localhost:8080/UserManager" };
    }

    public void _setProperty(String name, Object value) {
        System.out.println("_setProperty");
        int size = _propertyNames.length;
        for (int i = 0; i < size; ++i) {
            if (_propertyNames[i].equals(name)) {
                _propertyValues[i] = value;
                return;
            }
        }


        String[] newPropNames = new String[size + 1];
        System.arraycopy(_propertyNames, 0, newPropNames, 0, size);
        _propertyNames = newPropNames;

        Object[] newPropValues = new Object[size + 1];
        System.arraycopy(_propertyValues, 0, newPropValues, 0, size);
        _propertyValues = newPropValues;
        _propertyNames[size] = name;
        _propertyValues[size] = value;
    }

    public Object _getProperty(String name) {
        System.out.println("_getProperty");
        for (int i = 0; i < _propertyNames.length; ++i) {
            if (_propertyNames[i].equals(name)) {
                return _propertyValues[i];
            }
        }

        if (ENDPOINT_ADDRESS_PROPERTY.equals(name) || USERNAME_PROPERTY.equals(name) ||
                PASSWORD_PROPERTY.equals(name)) {
            return null;
        }

        if (SESSION_MAINTAIN_PROPERTY.equals(name)) {
            return new java.lang.Boolean(false);
        }

        throw new JAXRPCException("Stub does not recognize property: " + name);
    }

    protected void _prepOperation(Operation op) {
        for (int i = 0; i < _propertyNames.length; ++i) {
            op.setProperty(_propertyNames[i], _propertyValues[i].toString());
        }
    }

    public java.lang.String login(java.lang.String username,java.lang.String password)
        throws java.rmi.RemoteException {
        Object[] inputObject = new Object[2];
        inputObject[0] = username;
        inputObject[1] = password;
        Operation op = Operation.newInstance(_qname_wsdl_request, _login, _loginResponse);
        _prepOperation(op);
        op.setProperty(Operation.SOAPACTION_URI_PROPERTY, "");
        Object resultObj;
        try {
            resultObj = op.invoke(inputObject);
        } catch (JAXRPCException e) {
            Throwable cause = e.getLinkedCause();
            if (cause instanceof java.rmi.RemoteException) {
                throw (java.rmi.RemoteException)cause;
            }
            throw e;
        }
        java.lang.String result;
        Object resultObj2 = ((Object[])resultObj)[0];
        result = (java.lang.String)resultObj2;
        return result;
    }
}

 

最后只要在MIdlet中的run方法里调用这个login方法就可以了.

 

未完...

分享到:
评论

相关推荐

    j2me手册-webservice_mobile_wtk

    本手册围绕“j2me手册-webservice_mobile_wtk”这一主题,深入探讨了J2ME在Web服务、API使用、蓝牙通信、移动媒体、图形处理、PDA应用以及无线消息传递等方面的知识点,旨在帮助开发者更好地理解和应用J2ME技术。...

    j2me调用.net WebService实例

    这里我们使用C#语言,定义一个简单的Web服务类`Service1`,其中包含一个名为`Hello`的Web方法,该方法接收一个字符串参数并返回一个包含中文字符的字符串。为了处理中文字符,你需要在Web服务的`web.config`文件中...

    j2me MIDP设备连接Webservice源码包

    最近在开发j2me,需要连接Webservice,可是在ksoap官网下载的包用不了,想到这个是开源包,应该有源代码,在不同的网站上找了很久,终于收集到了MIDP设备连接Webservice的源代码。经过我的使用,证明是可以用的。...

    J2ME实现的断点续传,解决下载文件问题

    在J2ME中,我们通常使用HttpConnection或StreamConnection来处理网络通信。要实现断点续传,我们需要: 1. **保存文件信息**:客户端在开始下载前,需要检查本地是否存在目标文件以及其已下载的部分。如果存在,...

    基于WebService技术的J2ME和_NET互连.pdf

    1. **创建WebService**:在.NET平台上,使用C#或VB.NET等语言创建WebService,定义服务接口和方法,这些方法能够处理来自移动设备的请求,并返回相应的响应数据。 2. **WebService部署**:将创建好的WebService部署...

    基于WebService技术的J2ME和NET互连1

    本系统使用WebService技术将J2ME移动终端设备和NET企业级应用程序连接起来,实现了数据交换和业务流程的集成,为企业构建移动电子商务系统提供了一种快速、有效的解决方案。该系统的实现为企业提供了一种快速、灵活...

    J2ME开发 J2ME开发 J2ME开发

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能电表、家庭自动化设备等。它提供了跨平台的开发环境,使得开发者可以编写一次代码,到处运行。J2ME由两大...

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

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

    j2me_plane.rar_j2me_j2me 飞机_j2me 飞机 游戏_飞机游戏

    在J2ME中,我们通常使用Canvas类作为画布,绘制游戏的各个元素。Canvas继承自Displayable,允许我们自定义绘制函数,实现游戏画面的更新。例如,在飞机游戏中,我们需要绘制飞机、敌人、子弹以及背景等元素。 事件...

    在eclipse中怎样使用j2me

    在eclipse中怎样使用j2me 在eclipse中怎样使用j2me 在eclipse中怎样使用j2me

    j2me开发框架介绍

    它的目标是使用这个脚本引擎便于开发一个更加灵活的 j2me 游戏。 这些框架和库都可以用于简化 J2ME 应用程序的开发过程,提高开发效率。但是,在选择框架时,需要根据项目的需求和特点进行选择,以确保项目的成功。

    j2me游戏.rar

    "j2me游戏.rar"很可能是包含了一系列使用J2ME技术开发的游戏资源包。在本文中,我们将深入探讨J2ME游戏开发的关键知识点。 一、J2ME概述 J2ME由Java ME规范定义,它提供了多种配置和框架,如MIDP(Mobile ...

    J2ME中文版教程 J2ME教程

    总的来说,这个J2ME中文教程解密版是一份全面且实用的学习资源,无论你是Java初学者还是希望进入移动开发领域的专业人士,都能从中受益。通过学习和实践,你将能够熟练地运用J2ME技术开发出富有创意的移动应用。

    J2ME游戏开发(第一版)

    《J2ME游戏开发(第一版)》是针对Java Micro Edition(J2ME)平台进行游戏编程的专业指导书籍。J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。这本书的焦点在于教导开发者...

    J2ME_Map.rar_J2ME 地图_J2ME游戏_j2me 游戏_j2me_m_绘制地图

    在J2ME(Java 2 Micro Edition)平台上开发游戏时,地图的设计与绘制是至关重要的一个环节。J2ME作为一种轻量级的Java平台,广泛应用于移动设备,如早期的智能手机和平板电脑,用于实现各种应用程序,特别是游戏。本...

    J2ME中文开发教程(附带Myeclipse用J2ME插件)

    1. **环境配置**:如何安装Myeclipse以及激活J2ME插件,设置J2ME SDK路径,创建新的J2ME项目。 2. **基础语法**:介绍Java语言的基础知识,包括变量、控制结构、类和对象等。 3. **MIDP API**:讲解如何使用MIDP API...

    j2me点阵字库

    总的来说,J2ME点阵字库是移动和嵌入式开发中的一个重要组成部分,它涉及字库的加载、字符映射、渲染、优化等多个技术环节。理解和掌握这些知识点对于创建高效且用户体验良好的J2ME应用,特别是游戏,至关重要。

    j2me手机浏览器/j2me手机浏览器

    总的来说,“j2me手机浏览器”是J2ME平台上的一个关键应用,它在功能手机时代为移动用户提供了接入互联网的能力。随着智能手机和更强大的移动操作系统的发展,J2ME浏览器逐渐被取代,但它们在移动互联网发展的早期...

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏下,上为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    安卓AIDE开发J2ME

    【安卓AIDE开发J2ME】是一个教程主题,它涵盖了使用AIDE集成开发环境(IDE)来开发Java Micro Edition (J2ME)应用程序的过程。AIDE是一款强大的Android开发工具,通常用于编写原生的Android应用,但在此场景下,它被...

Global site tag (gtag.js) - Google Analytics