use of org.ksoap2.serialization.SoapObject in project SeaStar by 13120241790.
the class SoapManager method isArrayNode.
/**
* 判断该节点下面是否有相同的节点,如果说明是数组
* @param childsoap
* @return
*/
public boolean isArrayNode(SoapObject childsoap) {
PropertyInfo proinfo = null;
int count = childsoap.getPropertyCount();
for (int i = 0; i < count; i++) {
proinfo = new PropertyInfo();
childsoap.getPropertyInfo(i, proinfo);
if (SoapObject.class == proinfo.getType()) {
if (childsoap.hasProperty(proinfo.getName())) {
return true;
}
}
}
return false;
}
use of org.ksoap2.serialization.SoapObject in project SeaStar by 13120241790.
the class SoapManager method getSoapresult.
/**
* 将SoapObject转json字符串
* @param soapresult SoapObject
* @param jsonResult JSONObject
*/
private void getSoapresult(SoapObject soapresult, JSONObject jsonResult, HashSet<String> hashset) {
try {
if (soapresult != null) {
PropertyInfo proinfo = null;
SoapObject childsoap = null;
JSONObject childJson = null;
String curName = null;
int count = soapresult.getPropertyCount();
for (int i = 0; i < count; i++) {
//获取当前节点的信息
proinfo = new PropertyInfo();
soapresult.getPropertyInfo(i, proinfo);
curName = proinfo.getName();
//判断当前节点的类型,如果是SoapPrimitive则可以直接取值,如果是SoapObject则继续解析
if (SoapPrimitive.class == proinfo.getType()) {
jsonResult.put(curName, proinfo.getValue());
} else if (SoapObject.class == proinfo.getType()) {
childJson = new JSONObject();
childsoap = (SoapObject) soapresult.getProperty(i);
//判断该节点下面有相同节点,那么他就是一个数组
if (isArrayNode(childsoap)) {
hashset.add(curName);
NLog.e(tag, "curName : " + curName);
}
//处理相同名字的节点,到时候好替换成JSONArray
if (jsonResult.has(curName)) {
curName = curName + i;
}
//递归调用自己,获取子节点
getSoapresult(childsoap, childJson, hashset);
//将子节点添加到根节点下面
jsonResult.put(curName, childJson);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
use of org.ksoap2.serialization.SoapObject in project teaTime by ancfdy.
the class WebServiceUtils method callWebService.
/**
*请求网络数据
* @param url
* WebService服务器地址
* @param methodName
* WebService的调用方法名
* @param properties
* WebService的参数
* @param webServiceCallBack
* 回调接口
*/
public static void callWebService(String url, final String methodName, HashMap<String, String> properties, final WebServiceCallBack webServiceCallBack) {
// 创建HttpTransportSE对象,传递WebService服务器地址
final HttpTransportSE httpTransportSE = new HttpTransportSE(url);
// 创建SoapObject对象
SoapObject soapObject = new SoapObject(NAMESPACE, methodName);
if (properties != null) {
for (Iterator<Entry<String, String>> it = properties.entrySet().iterator(); it.hasNext(); ) {
Entry<String, String> entry = it.next();
soapObject.addProperty(entry.getKey(), entry.getValue());
}
}
// 实例化SoapSerializationEnvelope,传入WebService的SOAP协议的版本号
//tomcat 7.055 for 64 jdk 1.6 for 64 web3.0 这里写 ver12 ,如果是ver11会报 http 415错误
final SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
// 设置是否调用的是.Net开发的WebService
soapEnvelope.bodyOut = soapObject;
//如果调用的是.Net的WebService,这里为true,否则为false,不然调用会不成功
soapEnvelope.dotNet = false;
soapEnvelope.setOutputSoapObject(soapObject);
httpTransportSE.debug = true;
// 用于子线程与主线程通信的Handler
final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 将返回值回调到callBack的参数中
webServiceCallBack.callBack((Object) msg.obj);
}
};
// 开启线程去访问WebService
executorService.submit(new Runnable() {
@Override
public void run() {
Object resultSoapObject = null;
try {
httpTransportSE.call(WEB_SERVER_URL + methodName, soapEnvelope);
if (soapEnvelope.getResponse() != null) {
// 获取服务器响应返回的SoapObject
resultSoapObject = (Object) soapEnvelope.bodyOut;
}
} catch (HttpResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} finally {
// 将获取的消息利用Handler发送到主线程
mHandler.sendMessage(mHandler.obtainMessage(0, resultSoapObject));
}
}
});
}
use of org.ksoap2.serialization.SoapObject in project teaTime by ancfdy.
the class WebServiceUtils method callWebService.
/**
*请求网络数据
* @param url
* WebService服务器地址
* @param methodName
* WebService的调用方法名
* @param properties
* WebService的参数
* @param webServiceCallBack
* 回调接口
*/
public static void callWebService(String url, final String methodName, HashMap<String, String> properties, final WebServiceCallBack webServiceCallBack) {
// 创建HttpTransportSE对象,传递WebService服务器地址
final HttpTransportSE httpTransportSE = new HttpTransportSE(url);
// 创建SoapObject对象
SoapObject soapObject = new SoapObject(NAMESPACE, methodName);
if (properties != null) {
for (Iterator<Entry<String, String>> it = properties.entrySet().iterator(); it.hasNext(); ) {
Map.Entry<String, String> entry = it.next();
soapObject.addProperty(entry.getKey(), entry.getValue());
}
}
// 实例化SoapSerializationEnvelope,传入WebService的SOAP协议的版本号
//tomcat 7.055 for 64 jdk 1.6 for 64 web3.0 这里写 ver12 ,如果是ver11会报 http 415错误
final SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
// 设置是否调用的是.Net开发的WebService
soapEnvelope.bodyOut = soapObject;
//如果调用的是.Net的WebService,这里为true,否则为false,不然调用会不成功
soapEnvelope.dotNet = false;
soapEnvelope.setOutputSoapObject(soapObject);
httpTransportSE.debug = true;
// 用于子线程与主线程通信的Handler
final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 将返回值回调到callBack的参数中
webServiceCallBack.callBack((Object) msg.obj);
}
};
// 开启线程去访问WebService
executorService.submit(new Runnable() {
@Override
public void run() {
Object resultSoapObject = null;
try {
httpTransportSE.call(WEB_SERVER_URL + methodName, soapEnvelope);
if (soapEnvelope.getResponse() != null) {
// 获取服务器响应返回的SoapObject
resultSoapObject = (Object) soapEnvelope.bodyOut;
}
} catch (HttpResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} finally {
// 将获取的消息利用Handler发送到主线程
mHandler.sendMessage(mHandler.obtainMessage(0, resultSoapObject));
}
}
});
}
use of org.ksoap2.serialization.SoapObject in project ETSMobile-Android2 by ApplETS.
the class ExtendedSoapSerializationEnvelope method GetSoapObject.
public SoapObject GetSoapObject(Element detailElement) {
try {
XmlSerializer xmlSerializer = XmlPullParserFactory.newInstance().newSerializer();
StringWriter writer = new StringWriter();
xmlSerializer.setOutput(writer);
detailElement.write(xmlSerializer);
xmlSerializer.flush();
XmlPullParser xpp = new KXmlParser();
xpp.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
xpp.setInput(new StringReader(writer.toString()));
xpp.nextTag();
SoapObject soapObj = new SoapObject(detailElement.getNamespace(), detailElement.getName());
readSerializable(xpp, soapObj);
return soapObj;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
Aggregations