您的位置:首页 > 移动开发 > Android开发

android soup web客户端程序

2011-04-28 13:06 316 查看
WebService是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。
下载ksoap2-android-assembly-2.4-jar-with-dependencies.jar包。并放到项目的lib目录下,然后导入到工程中,及可以引用了。

private static final String NAMESPACE ="http://www.METS.com/";
private static String URL = "http://61.145.165.250:1012/MetsWebService.asmx";
private static final String METHOD_NAME = "Process";
private static String SOAP_ACTION = "http://www.METS.com/Process";
SoapObject result;
private String getStat(){

String dataStr="F4:C7:14:65:B9:72";//发送给服务器的字符串

byte[] sendData=dataStr.getBytes();//获取到该字符串的byte流

byte[] reqDeliveEquip=WebSvcPacket.BuildWebSvcPacket(3000, sendData, sendData.length);//给原始byte流加密

String str=Base64.encodeToString(reqDeliveEquip, Base64.DEFAULT);//把加密后的byte流转化成base64字符串

SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);   //构造   SoapObject对象,传入命名空间和方法名称参数

//传给服务器的字段信息(soup协议)
rpc.addProperty("strUserAccount", "131");
rpc.addProperty("strTicket", "");
rpc.addProperty("pRequestPkt", str);//int,string,double -byte[]

AndroidHttpTransport ht = new AndroidHttpTransport(URL);//根据服务器地址建立AndroidHttpTransport对象
ht.debug=true;

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);  //建soup协议版本为   VER11的信封
envelope.bodyOut = rpc; //把这个SoupObject对象传给信封的写流

envelope.dotNet = true;  //支持.net服务器
envelope.setOutputSoapObject(rpc);  //设置信封的输出SoupObjext对象

try {
ht.call(SOAP_ACTION, envelope);        }
catch (IOException e) {
return "IOException:"+e.getMessage();        }
catch (XmlPullParserException e) {
return "XmlPullParserException:"+e.getMessage();        }

//开始接受服务器的回复数据

result = (SoapObject) envelope.bodyIn;

String receiverData=result.getProperty("pOutResponsePkt").toString(); //根据soup协议获取一定字段的值

byte[] receBytes=Base64.decode(receiverData, Base64.DEFAULT);//把字符串解码成byte流

byte[] parseData=WebSvcPacket.ParseWebSvcPacket(receBytes, receBytes.length, code);//解码
String datas = null;
if(parseData!=null)
{
String recvData = null;
try {
recvData = new String(parseData, "UTF-8");//打印从服务器获取的字符串
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Log.i("mylog","-------------------------------------------------------------------------------------");
String[] recvAry = recvData.split("/t");
String serverTime = recvAry[0].substring(1, recvAry[0].length() - 1);
Log.i("mylog","serverTime:"+serverTime);
String srcTicket = recvAry[1];
Log.i("mylog","srcTicket:"+srcTicket);
String encryptKey = recvAry[2];
Log.i("mylog","encryptKey:"+encryptKey);
String ticket = new String();
Log.i("mylog","ticket:"+ticket);

ticket = WebSvcPacket.GenerateTicket("131", serverTime, encryptKey, srcTicket);

datas=RequestDeliveEuip.requestDeliveEuip(ticket);

}
return datas;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐