【问题标题】:CISCO MSE API : SOAP communication with Android APPCISCO MSE API : 与 Android APP 的 SOAP 通信
【发布时间】:2013-08-10 21:37:51
【问题描述】:

我想知道如何在android源码中应用SOAP-Request参数。

示例...

第一季度。这是正确的吗 ? (

private static final String SOAP_ACTION = "           "; <-- ???
private static final String METHOD_NAME = "GetStationStats "; <-- Is this right?
private static final String NAMESPACE = " http://cisco/mse/location"; <-- Is this right?
private static final String URL = "https://192.168.100.231/location"; <-- Is this right?

第二季度。 从 Soap-xml 改变

<AesBusinessSession id="10510"/>      
<AesMobileStation macAddress="00:01:02:03:04:05"/> 

=> 到安卓源

request.addProperty("AesBusinessSession id" ,10510);    <-- Is this right?
request.addProperty("AesMobileStation macAddress" ,00:01:02:03:04:05);    <-- Is this right?

这是我的来源。

private void soapData(String searchData) {
SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME);        
Log.e("dd", "Soap Created");        
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);        
envelope.dotNet=true;        
envelope.setOutputSoapObject(request);
request.addProperty("SQL" ,searchData);
HttpTransportSE androidHttpTransport=new HttpTransportSE(URL);
androidHttpTransport.debug = true;
 try       
{            
   androidHttpTransport.call(SOAP_ACTION, envelope);           
   SoapPrimitive result = (SoapPrimitive)envelope.getResponse();            //String result1 = xmlPasing(result.toString()); //xml파싱           
   String re_xml = result.toString();            
   outPut.setText(re_xml); //결과값 출력       
} 
catch(Exception e)       
{           
   Log.e("dd", "Soap Catch",e);            
   e.printStackTrace();       
} //try-catch    
}

================================================ ===== 例子 方法:GetStationStats

根据各种搜索条件返回当前存储在 MSE 中的 AesMobileStation 统计记录。结果:AesBaseStats 对象,如果未找到则返回 null 参数:AesBusinessSession、AesMobileStation Key

7.3.1 SOAP 请求

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">   
<SOAP-ENV:Body>    
<GetStationStats xmlns=” http://cisco.com/mse/location”>       
<AesBusinessSession id="10510"/>      
<AesMobileStation macAddress="00:01:02:03:04:05"/>     
</GetStationStats>   
</SOAP-ENV:Body>
 </SOAP-ENV:Envelope> 

7.3.2 SOAP 响应 7.3.2.1 成功

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">   
<SOAP-ENV:Body>    
<Response xmlns=” http://cisco.com/mse/location”>       
<AesBaseStats  macAddress="00:01:02:03:04:05" packetsSent=”12” bytesSent=”1221111” packetsRecv=”1111” bytesRecv=”1212204” policyErrors=”0” changedOn=”1220324324”/>    
</Response>  
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

================================================ ==============

【问题讨论】:

    标签: android soap cisco ksoap


    【解决方案1】:

    SOAP_ACTION - 你可以在 wsdl 中看到它,可能是这样的:"http://cisco/mse/location/GetStationStats"METHOD_NAMENAMESPACE 似乎是正确的。 URL - 服务网址,我不知道它是否正确。您也可以在 wsdl 中看到它。

    request.addProperty("AesBusinessSession id" ,10510);
    request.addProperty("AesMobileStation macAddress" ,00:01:02:03:04:05);
    

    这是错误的(输出将类似于:&lt;AesBusinessSession id&gt;10510&lt;/AesBusinessSession id&gt;. 您可以使用SoapObjectSoapPrimitive 来添加属性:

    SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME);
    SoapObject aesBusinessSession = new SoapObject(NAMESPACE, "AesBusinessSession");
    aesBusinessSession.addAttribute("id",10510); 
    SoapObject aesBaseStats = new SoapObject(NAMESPACE, "AesBaseStats");  
    ...//add attrs to aesBaseStats 
    request.addSoapObject(aesBusinessSession);
    request.addSoapObject(aesBaseStats);
    

    【讨论】:

    • 感谢您的建议。但是,我不能调用 addSoapObject。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多