JAVA网页设计J2me会见dotnetwerbservice
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。会见J2me会见dotnetwerbservice[分享]Postby:chinapeople@2003-9-2112:51:55
1.思绪:利用j2me中自己自带的HttpConnection会见webservice,挪用http://localhost/RoadWebService/RoadWS.asmx/中的办法WebServiceTest,参数为param。以下:
privatevoidconnect(){
HttpConnectionhc=null;
//InputStreamin=null;
DataInputStreamin=null;
Strings="";
Stringurl="http://localhost/RoadWebService/RoadWS.asmx/WebServiceTest?param="+inputTextField.getString();
try{
hc=(HttpConnection)Connector.open(url);
intch;
in=hc.openDataInputStream();
while((ch=in.read())!=-1){
s=s+(char)ch;
}
//Strings=in.readUTF();
in.close();
hc.close();
mMessageItem.setText(s);
}
catch(IOExceptionioe){
mMessageItem.setText(ioe.toString());
}
//mDisplay.setCurrent(mMainform);
String[]items;
//此处是对的到的字符串S举行XML剖析。
items=parseUsingkXML(s);
mDisplay.setCurrent(newItemList(items));
}
这时候候的到的字符串流是XML格局的,以下:hellozl
利用第三方的CLDCh境下作的_放原始aXML剖析器──kXML,http://www.kxml.org/下dkXML包。对猎取的XML格局的数据流举行剖析,办法以下:
privateString[]parseUsingkXML(Stringxml){
try{
ByteArrayInputStreambin=
newByteArrayInputStream(
xml.getBytes());
InputStreamReaderin=newInputStreamReader(bin);
XmlParserparser=newXmlParser(in);
Vectoritems=newVector();
parsekXMLItems(parser,items);
System.out.println(items.size());
String[]tmp=newString;
items.copyInto(tmp);
returntmp;
}
catch(IOExceptione){
returnnewString[]{e.toString()};
}
}
privatevoidparsekXMLItems(XmlParserparser,Vectoritems)
throwsIOException{
booleaninItem=false;
while(true){
ParseEventevent=parser.read();
switch(event.getType()){
caseXml.START_TAG:
if(event.getName().equals("string")){
inItem=true;
}
break;
caseXml.END_TAG:
if(event.getName().equals("string")){
inItem=false;
}
break;
caseXml.TEXT:
if(inItem){
items.addElement(event.getText());
}
break;
caseXml.END_DOCUMENT:
return;
}
}
}
classItemListextendsListimplementsCommandListener{
ItemList(String[]list){
super("Items",IMPLICIT,list,null);
addCommand(mExitCommand);
setCommandListener(this);
}
publicvoidcommandAction(Commandc,Displayabled){
if(c==mExitCommand){
exitMIDlet();
}
}
}
经由函数parsekXMLItems的剖析后数据将输入至Items中,并用于显现。
附录1:
dotnet中的webservice的办法webservicetest(详细的创建一个dotnetwebservie请参考其他材料):
PublicFunctionWebServiceTest(ByValparamAsString)AsString
Ifparam="cqy"Then
WebServiceTest="hellocqy"
ElseIfparam="zl"Then
WebServiceTest="hellozl"
ElseIfparam="zy"Then
WebServiceTest="hellozy"
Else
WebServiceTest="whoareyou"
EndIf
EndFunction
附录2
客户端j2me源代码://HttpMidlet.java
importjava.io.*;
importjava.util.*;
importjavax.microedition.io.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
importorg.kxml.*;
importorg.kxml.parser.*;
publicclassHttpMidlet
extendsMIDlet
implementsCommandListener{
privateDisplaymDisplay;
privateFormmMainform;
privateStringItemmMessageItem;
privateCommandmExitCommand,mConnectCommand;
privatefinalTextFieldinputTextField;
publicHttpMidlet(){
mMainform=newForm("HitMIDlet");
mMessageItem=newStringItem(null,"");
mExitCommand=newCommand("加入",Command.EXIT,0);
mConnectCommand=newCommand("毗连",
Command.SCREEN,0);
mMainform.append(mMessageItem);
inputTextField=newTextField("Inputtext","",128,TextField.ANY);
mMainform.append(inputTextField);
mMainform.addCommand(mExitCommand);
mMainform.addCommand(mConnectCommand);
mMainform.setCommandListener(this);
}
publicvoidstartApp(){
mDisplay=Display.getDisplay(this);
mDisplay.setCurrent(mMainform);
}
publicvoidexitMIDlet(){
notifyDestroyed();
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanunconditional){}
publicvoidcommandAction(Commandc,Displayables){
if(c==mExitCommand)
notifyDestroyed();
elseif(c==mConnectCommand){
Formwaitform=newForm("Waiting...");
mDisplay.setCurrent(waitform);
Threadt=newThread(){
publicvoidrun(){
connect();
}
};
t.start();
}
}
privatevoidconnect(){
HttpConnectionhc=null;
//InputStreamin=null;
DataInputStreamin=null;
Strings="";
Stringurl="http://localhost/RoadWebService/RoadWS.asmx/WebServiceTest?param="+inputTextField.getString();
try{
hc=(HttpConnection)Connector.open(url);
intch;
in=hc.openDataInputStream();
while((ch=in.read())!=-1){
s=s+(char)ch;
}
//Strings=in.readUTF();
in.close();
hc.close();
mMessageItem.setText(s);
}
catch(IOExceptionioe){
mMessageItem.setText(ioe.toString());
}
//mDisplay.setCurrent(mMainform);
String[]items;
items=parseUsingkXML(s);
mDisplay.setCurrent(newItemList(items));
}
privateString[]parseUsingkXML(Stringxml){
try{
ByteArrayInputStreambin=
newByteArrayInputStream(
xml.getBytes());
InputStreamReaderin=newInputStreamReader(bin);
XmlParserparser=newXmlParser(in);
Vectoritems=newVector();
parsekXMLItems(parser,items);
System.out.println(items.size());
String[]tmp=newString;
items.copyInto(tmp);
returntmp;
}
catch(IOExceptione){
returnnewString[]{e.toString()};
}
}
privatevoidparsekXMLItems(XmlParserparser,Vectoritems)
throwsIOException{
booleaninItem=false;
while(true){
ParseEventevent=parser.read();
switch(event.getType()){
caseXml.START_TAG:
if(event.getName().equals("string")){
inItem=true;
}
break;
caseXml.END_TAG:
if(event.getName().equals("string")){
inItem=false;
}
break;
caseXml.TEXT:
if(inItem){
items.addElement(event.getText());
}
break;
caseXml.END_DOCUMENT:
return;
}
}
}
classItemListextendsListimplementsCommandListener{
ItemList(String[]list){
super("Items",IMPLICIT,list,null);
addCommand(mExitCommand);
setCommandListener(this);
}
publicvoidcommandAction(Commandc,Displayabled){
if(c==mExitCommand){
exitMIDlet();
}
}
}
}
用wtk2.0创建project,称号为HttpMidlet,类称号为HttpMidlet
将HttpMidlet.java文件拷贝至wtk目次下的appsHttpMidlet的src目次下,将第三方kxml文件ksoap-midp.zip拷贝至appsHttpMidletlib目次下,编译便可。
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 是一种突破用户端机器环境和CPU 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 是一种语言,用以产生「小应用程序(Applet(s)) 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 是一种使网页(Web Page)产生生动活泼画面的语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
页:
[1]