一、在我的移动项目——NewDraftWriteActivity类——leave()函数,直接调用接口,该类继承了接口BPowerKernelWaitCallback,实现该接口的方法为获得调用接口的返回值。
/**
* 一、在我的一个移动项目中——NewDraftWriteActivity类——leave()函数,直接调用接口,
* 该类继承了接口BPowerKernelWaitCallback,实现该接口的方法为获得调用接口的返回值
* 请假功能
*/
private WebServiceCall webServiceCall;
protected void leave() {
JSONObject param = new JSONObject();
try {
param.put("huiyicanyujiluliushuihao", huiyicanyujiluliushuihao);
param.put("qingjianeirong", content);
} catch (JSONException e) {
e.printStackTrace();
}
try {
String params = new String(param.toString().getBytes(),"utf-8");
webServiceCall = new WebServiceCall(this);
webServiceCall.setiParamRequest(params);
webServiceCall.setsParamQueryText("HuiYiQingJia");
webServiceCall.startWebService(this);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
二、调用接口后从服务器返回的值
/**
* 二、调用接口后从服务器返回的值
* cExec=proposalbill.mobile.w00300_fhz_comm.WebServiceCall$WebServiceExecutor@40659840, nID=1, cResult=null
*/
public void onREDone(BPowerRemoteExecutor cExec, int nID, BPowerPacket cResult) {
super.onREDone(cExec, nID, cResult);
System.out.println("cExec="+cExec+", nID="+nID+", cResult="+cResult);
if(nID==1){
PublicTools.displayToast("请假成功!");
btnSave.setClickable(true);
content = "";
etContent.setText("");
etContent.setHint("");
}
};
三、在WebServiceCall里startWebService()方法
/**
* 三、在WebServiceCall里startWebService()方法
* @param iProc2015-3-12备注
*/
public void startWebService(BPowerKernelWaitCallback iProc){
webServiceExecutor=new WebServiceExecutor(iProc, 0);
webServiceExecutor.setID(1);
webServiceExecutor.start();
}
四、调用应用服务器的接口
/**
* 四、传参数进去并获得应用服务器的接口返回的值queryResult
* 2014-2-25
* @author nm
*/
public MobileDataProvider m_dbresult;
class WebServiceExecutor extends AndroidRPCThreadExecutor {
public WebServiceExecutor(BPowerKernelWaitCallback iProc, int nFlags) {
super(ClientKernel.getKernel(), bpowerRPCactiity, iProc, nFlags);
}
@Override
protected int internalRun() {
StringBuffer sErrMsg = new StringBuffer();
if(sParamsOperation!=null&&iParamsRequest!=""){
queryResult = m_dbresult.leave(this,
"建议提案业务管理器",
"执行业务服务",
sParamsOperation, iParamsRequest, sErrMsg);
m_sError=sErrMsg.toString();
}
m_nErrorCode = queryResult;
if(queryResult>=0) {
return BPowerCode.BPC_OK;
}else {
return BPowerCode.BPC_FALSE;
}
}
}
五、调用应用服务器的接口
/**
* 五、调用应用服务器的接口
* 会议通知——请假
* @param cExecutor
* @param sModName接口名字
* @param sFuncName应用服务器名字
* @param sOperation操作名 请假
* @param sRequest json对象
* @param sErrMsg
* @return2015-2-26备注
*/
public int leave(BPowerRPCThreadExecutor cExecutor, String portName,
String appServerName, String sOperation, String sRequest, StringBuffer sErrMsg) {
int Result = -1;
BPowerPacket cPkt = new BPowerPacket();
cPkt.newFuncCall("建议提案业务管理器", "执行业务服务");//portName, appServerName其实()里是这2参数
cPkt.addParam("sOperation", sOperation);//HuiYiQingJia
cPkt.addParam("sRequest", "<m:parameter>" + sRequest + "</m:parameter>");//<m:parameter>{"qingjianeirong":"请假内容","huiyicanyujiluliushuihao":"120"}</m:parameter>
BPowerPacket cResult = rpc(cExecutor, cPkt, sErrMsg);//返回结果
if (cResult == null) return -1;
if (BPowerCode.S_OK == cResult.getResultItem()) {//远程调用webservice成功;
Result = 1;
} else {
handleErrMsg(cResult, sErrMsg);
}
return Result;// BPowerCode.BPC_OK;
}
完。