android调用webservice 不执行envelope.bodyIn
本帖最后由 wushuangman1127 于 2013-06-23 19:34:31 编辑
String soapAction = "http://localhost/.../uploadposition";
String methodName = "uploadposition";
String endPoint = "http://localhost/.../s_position.php";
String result = null;
SoapObject object = null;
//Initialize soap request + add parameters
SoapObject request = new SoapObject(nameSpace,methodName);
request.addProperty("long",lng);
request.addProperty("lat",lat);
request.addProperty("license",license);
request.addProperty("sn","");
request.addProperty("stat",stat);
request.addProperty("speed",(float)0);
request.addProperty("direction","");
request.addProperty("pin","1111");
/*webservice 输入参数
long: xsd:float
lat: xsd:float
license: xsd:string
sn: xsd:string
stat: xsd:int
speed: xsd:float
direction: xsd:string
pin: xsd:string
*/
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
(new MarshalBase64()).register(envelope);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(endPoint);
androidHttpTransport.call(soapAction, envelope);
object = (SoapObject)envelope.bodyIn;
result = object.getProperty("return").toString();
if(envelope.getResponse()!=null)
{
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
result = response.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
这段代码主要功能是调用weiservice的接口上传用户的当前位置信息,但是在执行的时候总是跳过41、42这两句代码,从而无法获取返回值,不知为何。之前用同样的方法调用服务器接口注册用户信息都没问题。
有哪位同仁遇到相似的题的,希望能指点一下!谢谢
android webservice soap
[解决办法]
androidHttpTransport.call(soapAction, envelope);异常了?跑到异常处理段里去了
[解决办法]
androidHttpTransport.call(soapAction,?envelope);改为androidHttpTransport.call(null,?envelope);试试
[解决办法]
感觉你的41,42行代码是多余的,想要获取response信息,直接在
if(envelope.getResponse()!=null)
{
//处理你的响应代码即可
}