快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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 ?h境下咦鞯拈_放原始瘁 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目录下的appsHttpMidlet的src目录下,将第三方kxml文件ksoap-midp.zip拷贝至apps HttpMidletlib目录下,编译即可。
返回类别: 教程
上一教程: 具体讲述JSP、PHP与JAVA融合的开发环境
下一教程: JDBC3.0有什么新特性

您可以阅读与"J2ME访问DOTNETWERBSERVICE"相关的教程:
· 加快JDBC设计中JSP访问数据库
· 基于APACHE 配置文件的WEB页面访问权限控制
· 建立JSP操作以提高数据库访问的效率
· java通过JDBC访问Oracle的2个非常
· J2ME学习笔记_1_开发环境的安装和配置
    微笑服务 优质保证 索取样品