Android下soap访问webservice

Android本身是不提供soap访问webservice的功能,引用了ksoap2-android的jar实现了访问webservice的方法。代码如下:


static final int ACTIVITY_REQUEST_CODE_A = 100;

String TAG = "Response";

Object resultRequestSOAP = null;

static UZModuleContext moduleContext;

private static UZModuleContext mJsCallback;

//设置命名空间、访问地址、方法名    

String SOAP_ACTION;    

String METHOD_NAME;    

String NAMESPACE;    

String URL;

String Propert;

public carapi(UZWebView webView) {

super(webView);

}

@SuppressWarnings("unused")

@UzJavascriptMethodpublic void jsmethod_QueryPassport(final UZModuleContext moduleContext){

this.moduleContext = moduleContext;

SOAP_ACTION = moduleContext.optString("SOAP_ACTION");

METHOD_NAME = moduleContext.optString("METHOD_NAME");

NAMESPACE = moduleContext.optString("NAMESPACE");

URL = moduleContext.optString("URL");

Propert = moduleContext.optString("Propert");

if("".equals(SOAP_ACTION) || "".equals(METHOD_NAME) || "".equals(NAMESPACE) || "".equals(URL) || "".equals(Propert)){

try {

    JSONObject ret = new JSONObject();

    ret.put("data", "400");

    moduleContext.success(ret, true);

    } catch (JSONException e) {

    e.printStackTrace();

    }

}else{

//异步任务执行Webservice请求     

 AsyncCallWS task = new AsyncCallWS();    

  task.execute();

}

private class AsyncCallWS extends AsyncTask{

@Override

protected void onPreExecute() {

Log.i(TAG, "onPreExecute");

}

@Override

protected Void doInBackground(Void... params) {

Log.i(TAG, "doInBackground");

calculate();

return null;

}

@Override

protected void onPostExecute(Void result) {

Log.i(TAG, "onPostExecute");

}

}

public void calculate() {

try {

//             创建soapObject,即拼装soap bodyin

try{

JSONObject propertobj = new JSONObject(Propert);

Iterator it = propertobj.keys();

while(it.hasNext()){//遍历JSONObject

String keyname = it.next().toString();

String keyvalue = propertobj.getString(keyname);

Request.addProperty(keyname,keyvalue);

}

}catch(JSONException e){

System.out.println(e.toString());

}

//             创建soap 数据

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);

soapEnvelope.dotNet = true;

soapEnvelope.setOutputSoapObject(Request);

HttpTransportSE transport = new HttpTransportSE(URL);

//           soap 协议发送

transport.call(SOAP_ACTION, soapEnvelope);

//             soap 请求完成后返回数据并转换成字符串

resultRequestSOAP = (Object) soapEnvelope.getResponse();

Log.i(TAG, "Result: " + resultRequestSOAP);

try {

JSONObject ret = new JSONObject();

ret.put("data", resultRequestSOAP);

moduleContext.success(ret, true);

} catch (JSONException e) {

e.printStackTrace();

}

} catch (Exception ex) {

Log.e(TAG, "Error: " + ex.getMessage());

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,764评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,914评论 18 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,511评论 0 17
  • 流量管理的位置在com.oneplus.security.network下面 包含 calibrate 校准功能包...
    panberglee阅读 1,198评论 2 2
  • 转载自:https://xiaobailong24.me/2017/03/18/Android-RxJava2.x...
    Young1657阅读 2,035评论 1 9