J2me访问dotnetwerbservice

访问

J2me访问dotnetwerbservice[分享]

Post by: chinapeople @ 2003-9-21 12:51:55

1.思路:使用j2me中本身自带的HttpConnection访问webservice,调用http://localhost/RoadWebService/RoadWS.asmx/中的方法WebServiceTest,参数为param。如下:

private void connect() {

HttpConnection hc = null;

//InputStream in = null;

DataInputStream in = null;

String s="";

String url = "http://localhost/RoadWebService/RoadWS.asmx/WebServiceTest?param="+inputTextField.getString();

try {

hc = (HttpConnection)Connector.open(url);

int ch;

in = hc.openDataInputStream();

while((ch=in.read())!=-1){

s=s+(char)ch;

}

//String s = in.readUTF();

in.close();

hc.close();

mMessageItem.setText(s);

}

catch (IOException ioe) {

mMessageItem.setText(ioe.toString());

}

// mDisplay.setCurrent(mMainform);

String [] items;

//此处是对的到的字符串S进行XML解析。

items = parseUsingkXML( s );

mDisplay.setCurrent( new ItemList( items ) );

}

这时候的到的字符串流是XML格式的,如下: hello zl

使用第三方的CLDC 環境下運作的開放原始碼 XML 分析器 ── kXML,從 http://www.kxml.org/ 下載 kXML 包。对获取的XML格式的数据流进行解析,方法如下:

private String[] parseUsingkXML( String xml ){

try {

ByteArrayInputStream bin =

new ByteArrayInputStream(

xml.getBytes() );

InputStreamReader in = new InputStreamReader( bin );

XmlParser parser = new XmlParser( in );

Vector items = new Vector();

parsekXMLItems( parser, items );

System.out.println(items.size());

String[] tmp = new String[ items.size() ];

items.copyInto( tmp );

return tmp;

}

catch( IOException e ){

return new String[]{ e.toString() };

}

}

private void parsekXMLItems( XmlParser parser, Vector items )

throws IOException {

boolean inItem = false;

while( true ){

ParseEvent event = parser.read();

switch( event.getType() ){

case Xml.START_TAG:

if( event.getName().equals( "string" ) ){

inItem = true;

}

break;

case Xml.END_TAG:

if( event.getName().equals( "string" ) ){

inItem = false;

}

break;

case Xml.TEXT:

if( inItem ){

items.addElement( event.getText() );

}

break;

case Xml.END_DOCUMENT:

return;

}

}

}

class ItemList extends List implements CommandListener {

ItemList( String[] list ){

super( "Items", IMPLICIT, list, null );

addCommand( mExitCommand );

setCommandListener( this );

}

public void commandAction( Command c, Displayable d ){

if( c == mExitCommand ){

exitMIDlet();

}

}

}

经过函数parsekXMLItems的解析后数据将输出至Items中,并用于显示。

附录1:

dotnet中的webservice的方法webservicetest(具体的建立一个dotnetwebservie请参考其他资料):

Public Function WebServiceTest(ByVal param As String) As String

If param = "cqy" Then

WebServiceTest = "hello cqy"

ElseIf param = "zl" Then

WebServiceTest = "hello zl"

ElseIf param = "zy" Then

WebServiceTest = "hello zy"

Else

WebServiceTest = "who are you"

End If

End Function

附录2

客户端j2me源代码:// HttpMidlet.java

import java.io.*;

import java.util.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

import org.kxml.*;

import org.kxml.parser.*;

public class HttpMidlet

extends MIDlet

implements CommandListener {

private Display mDisplay;

private Form mMainform;

private StringItem mMessageItem;

private Command mExitCommand, mConnectCommand;

private final TextField inputTextField;

public HttpMidlet() {

mMainform = new Form("HitMIDlet");

mMessageItem = new StringItem(null, "");

mExitCommand = new Command("退出", Command.EXIT, 0);

mConnectCommand = new Command("连接",

Command.SCREEN, 0);

mMainform.append(mMessageItem);

inputTextField = new TextField("Input text","", 128,TextField.ANY);

mMainform.append(inputTextField);

mMainform.addCommand(mExitCommand);

mMainform.addCommand(mConnectCommand);

mMainform.setCommandListener(this);

}

public void startApp() {

mDisplay = Display.getDisplay(this);

mDisplay.setCurrent(mMainform);

}

public void exitMIDlet(){

notifyDestroyed();

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {

if (c == mExitCommand)

notifyDestroyed();

else if (c == mConnectCommand) {

Form waitform = new Form("Waiting...");

mDisplay.setCurrent(waitform);

Thread t = new Thread() {

public void run() {

connect();

}

};

t.start();

}

}

private void connect() {

HttpConnection hc = null;

//InputStream in = null;

DataInputStream in = null;

String s="";

String url = "http://localhost/RoadWebService/RoadWS.asmx/WebServiceTest?param="+inputTextField.getString();

try {

hc = (HttpConnection)Connector.open(url);

int ch;

in = hc.openDataInputStream();

while((ch=in.read())!=-1){

s=s+(char)ch;

}

//String s = in.readUTF();

in.close();

hc.close();

mMessageItem.setText(s);

}

catch (IOException ioe) {

mMessageItem.setText(ioe.toString());

}

// mDisplay.setCurrent(mMainform);

String [] items;

items = parseUsingkXML( s );

mDisplay.setCurrent( new ItemList( items ) );

}

private String[] parseUsingkXML( String xml ){

try {

ByteArrayInputStream bin =

new ByteArrayInputStream(

xml.getBytes() );

InputStreamReader in = new InputStreamReader( bin );

XmlParser parser = new XmlParser( in );

Vector items = new Vector();

parsekXMLItems( parser, items );

System.out.println(items.size());

String[] tmp = new String[ items.size() ];

items.copyInto( tmp );

return tmp;

}

catch( IOException e ){

return new String[]{ e.toString() };

}

}

private void parsekXMLItems( XmlParser parser, Vector items )

throws IOException {

boolean inItem = false;

while( true ){

ParseEvent event = parser.read();

switch( event.getType() ){

case Xml.START_TAG:

if( event.getName().equals( "string" ) ){

inItem = true;

}

break;

case Xml.END_TAG:

if( event.getName().equals( "string" ) ){

inItem = false;

}

break;

case Xml.TEXT:

if( inItem ){

items.addElement( event.getText() );

}

break;

case Xml.END_DOCUMENT:

return;

}

}

}

class ItemList extends List implements CommandListener {

ItemList( String[] list ){

super( "Items", IMPLICIT, list, null );

addCommand( mExitCommand );

setCommandListener( this );

}

public void commandAction( Command c, Displayable d ){

if( c == mExitCommand ){

exitMIDlet();

}

}

}

}

用wtk2.0建立project,名称为HttpMidlet,类名称为HttpMidlet

将HttpMidlet.java文件拷贝至wtk目录下的apps\HttpMidlet的src目录下,将第三方kxml文件ksoap-midp.zip拷贝至apps\ HttpMidlet\lib目录下,编译即可。

时间: 2024-12-03 16:53:29

J2me访问dotnetwerbservice的相关文章

[j2me]利用kSOAP让MIDP设备与WebService之间传递类对象[上]

 测试代码下载:http://files.cnblogs.com/zhengyun_ustc/WSCallerMIDlet.rar [j2me]利用kSOAP让MIDP设备与 WebService之间传递类对象 编写者 日期 关键词 郑昀@ultrapower 2005-8-14 J2me webservice soa ksoap serialization MIDP CLDC 无线设备联网的概念 中国移动GPRS网络的连接方式有两种类型,一种是WAP+GPRS,接入名称叫CMWAP,一种是KJ

J2ME程序与Servlet通讯访问Access数据库

access|servlet|程序|访问|数据|数据库   作者:关文柏 时间:2005年5月26日 现在J2ME联网的技术很多,本人也只是刚刚接触这方面,这几天帮别人调试了一些这方面的程序,学到了不少东西,下面就谈谈我学习的过程. 首先这种程序可以简化的分解成三个层面,1,J2ME的客户端(MIDlet程序)2,服务器端的servlet(servlet程序)3,数据库(Access或者是SQL等) 下面我通过一个小例子来实现通过手机客户端发送请求,然后服务器端的servlet响应,servle

在J2ME平台下,如何在浏览器中访问SDKey(存储卡),忘高手指点...

问题描述 在J2ME平台下,如何在浏览器中访问SDKey(存储卡),忘高手指点... 解决方案 解决方案二:J2ME没有这样的API解决方案三:..你学的好深啊解决方案四:j2me真访问不了本地资源了吗????解决方案五:学习,友情UP.

如何通过程访问手机的通讯录?有没有知道的,听说j2me没有权限,有没有什么好的方法?

问题描述 如何通过程访问手机的通讯录?还有,j2me的加密通信有没有谁做过的,分享下经验:-) 解决方案 解决方案二:J2ME有个包叫做PIM,专门用于访问通讯录,待办事项什么的解决方案三:JSR75:PDAOptionalPackagesfortheJ2METMPlatform解决方案四:通过JSR75访问手机的通讯录

最近在用J2ME编写手机客户端,又用到webservice技术去访问数据库,和调用网络资源。请问有些客户端的例子吗,还有服务器端的例子。

问题描述 最近在用J2ME编写手机客户端,又用到webservice技术去访问数据库,和调用网络资源.请问有些客户端的例子吗,还有服务器端的例子.

PHP如何识别是电脑或手机访问网站

现在通过手机访问网站越来越流行了,如果我们希望统计一下网站通过pc,手机移动端的各自访问量的情况,或者需要为手机移动端做一些特别的处理的话,那么我们就需要对访问网站的用户的客户端做一下鉴别了,下面这个实例就是通过php识别用户是电脑还是手机访问网站的方法. <?php function isMobile(){ $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $useragent_c

php判断终端是手机还是电脑访问网站代码

<?php function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HTTP_X_NOKIA_CONNECTION_MODE'])) return true; if (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) return true; if (strpos(strtoupper($_SERVER['HTTP_ACCEPT'])

J2ME中多线程网络连接编程的分析

编程|多线程|网络 摘 要 介绍并分析了J2ME的通用网络连接框架(GCF),并以此为基础,指出了在J2ME网络连接编程中存在的问题,并提出了通过构建多线程的两种解决方法. 关键词 J2ME GCF多线程 网络连接 引言 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE.J2EE并称.J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话.可视电话.数字机顶盒和汽车导航系统等等.即J2ME是为消费电子产品和手持设备量身定制的

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

编程|网络 引言 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话.可视电话.数字机顶盒和汽车导航系统等等.即J2ME是为消费电子产品和手持设备量身定制的Java专用版本. J2ME的出现使开发跨平台的消费类电子产品的应用软件成为可能.Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序.它提供了基于HTTP的高级Internet协议,使移动电话能以Clien