j2m2访问dotnet Webservice--以前写过,被到处转载,绝对原版

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目录下,编译即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 答:1. 计算该车辆所需要的驱动系统的参数:根据车重495kg、满载910kg、迎风面积2m2、最大爬坡度30°、最高车速90km/h、车轮直径573mm、摩擦系数0.018、空气阻力系数0.3,可以计算出最小有效功率、最大有效功率、最大加速度、最大减速度等参数。 2. 绘制车辆驱动系统的转速-转矩特性曲线:根据计算出来的参数,可以用转速- ### 回答2: 1. 根据给定的车辆数据,可以计算出车辆所需要的驱动系统的参数。首先计算车辆所受到的空气阻力: 空气阻力 = 0.5 * 空气阻力系数 * 迎风面积 * 空气密度 * 车速平方 其中,空气密度可以根据环境温度和海拔进行估算。 其次,计算车辆所受到的重力引起的坡道阻力: 坡道阻力 = 车重 * 重力加速度 * sin(坡度角度) 然后,计算车辆所需的驱动力: 驱动力 = 车辆所需的阻力 + 车重 * 重力加速度 * cos(坡度角度) 最后,根据车轮直径、摩擦系数和车辆速度,可以计算出驱动系统所需要的转速和转矩。 2. 车辆驱动系统的转速-转矩特性曲线可以通过实验或计算得到。一般而言,转速-转矩曲线呈现以下趋势: - 在起步阶段,转矩较大,随着转速的增加,转矩逐渐减小; - 在车辆巡航过程中,转矩保持相对稳定; - 当车辆需要爬坡时,转矩会进一步增大,以克服重力阻力; - 当车辆在高速行驶时,转矩会逐渐减小。 根据车辆所需的驱动力和驱动系统的转速-转矩特性,可以绘制出车辆的转速-转矩曲线。横轴表示转速,纵轴表示转矩,曲线上的点代表车辆在相应转速下的输出转矩。 ### 回答3: 1. 根据所给的车重,满载重量和爬坡度,可以计算出车辆所需的最大爬坡力。 最大爬坡力 = (车重 + 满载重量) * sin(最大爬坡度) 在这个例子中: 最大爬坡力 = (495kg + 910kg) * sin(30°) = 1941.5N 车辆的最大爬坡力等于其驱动系统产生的最大驱动力,因此我们可以计算出最大驱动力。 最大驱动力 = 最大爬坡力 / cos(最大爬坡度) 在这个例子中: 最大驱动力 = 1941.5N / cos(30°) ≈ 2240N 最高车速和车轮直径可以用来计算车辆的最大输出转速。 最大输出转速 = 最高车速 / (π * 轮胎直径) 在这个例子中: 最大输出转速 = 90km/h / (π * 0.573m) ≈ 93.4 rad/s 2. 为了绘制车辆驱动系统的转速-转矩特性曲线,我们需要进一步知道车辆的输出转矩。 输出转矩 = 最大驱动力 * 轮胎半径 在这个例子中: 输出转矩 = 2240N * 0.573m ≈ 1283.12 N·m 有了输出转矩和最大输出转速,我们可以绘制车辆驱动系统的转速-转矩特性曲线。根据车辆的设计,可以逐步增加驱动力和车速,并绘制对应的转速-转矩数据点。最后,将这些数据点连接起来,就可以得到转速-转矩特性曲线。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值