【发布时间】:2012-03-15 08:36:20
【问题描述】:
我目前正在开发和使用 ksoap2 Web 服务的应用程序。 我正在使用“ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar”
这是我的问题。
api10及以下版本可以成功接收数据。 (*在我的 电话和虚拟机)
但是当我在 api 11 的 Android 虚拟机上测试我的应用程序时 及更高版本。
HttpTransportSE 不起作用。
我的代码;(不是全部)
SoapSerializationEnvelope soapEnvol= new
SoapSerializationEnvelope(SoapEnvelope.VER11);
HttpTransportSE setConn = new HttpTransportSE(URL);
try {
setConn.call(SOAP_ACTION, soapEnvol);
}
catch{Exception e)
{
return null;
}
""" setConn.call(SOAP_ACTION, soapEnvol); """ 总是很受欢迎
api 11 av 机器。
我错过了什么? 已经谢谢了。
编辑:(完整代码响应)
public List<HashMap<String, String>> duyurulariListeOlarakGetir() {
SoapObject istek = new SoapObject(NAMESPACE, METHOD_NAME);
istek.addProperty("user", "123");
istek.addProperty("pass", "123");
istek.addProperty("appID", "1");
SoapSerializationEnvelope soapZarf = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapZarf.dotNet = true;
soapZarf.setOutputSoapObject(istek);
HttpTransportSE baglantıKur = new HttpTransportSE(URL);
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
try {
baglantıKur.debug=true;
baglantıKur.call(SOAP_ACTION, soapZarf);
SoapObject sonuclar = (SoapObject) soapZarf.getResponse();
int totalCount = sonuclar.getPropertyCount();
if (totalCount > 0) {
for (int detailCount = 0; detailCount < totalCount; detailCount++) {
SoapObject pojoSoap = (SoapObject) sonuclar.getProperty(detailCount);
HashMap<String, String> map = new HashMap<String, String>();
map.put("duyuruID", pojoSoap.getProperty("duyuruID").toString());
map.put("duyuruMetin", pojoSoap.getProperty("duyuruMetin").toString());
map.put("duyuruSaat", pojoSoap.getProperty("duyuruSaat").toString());
map.put("duyuruBaslik", pojoSoap.getProperty("duyuruBaslik").toString());
map.put("duyuruTarih", pojoSoap.getProperty("duyuruTarih").toString());
map.put("kurumID", pojoSoap.getProperty("duyuruSilindi").toString());
map.put("uygulamaID", pojoSoap.getProperty("duyuruSilindi").toString());
map.put("duyuruSilindi", pojoSoap.getProperty("duyuruSilindi").toString());
fillMaps.add(map);
}
} else
return null;
} catch (Exception e) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("duyuruID", "");
map.put("duyuruMetin", "Bağlantı kurulamadı");
map.put("duyuruSaat", "Bağlantı kurulamadı");
map.put("duyuruBaslik", "Bağlantı kurulamadı");
map.put("duyuruTarih", "Bağlantı kurulamadı");
map.put("kurumID", "Bağlantı kurulamadı");
map.put("uygulamaID","Bağlantı kurulamadı");
map.put("duyuruSilindi", "Bağlantı kurulamadı");
fillMaps.add(map);
return fillMaps;
}
return fillMaps;
}
【问题讨论】:
-
我认为这是某种错误,因为我在 ICS 上运行的应用程序也遇到了这个问题。如果我没记错的话,那么当您尝试与启用 SSL 的服务器通信时会发生这种情况,仪式?好吧,最终我不得不改用 Json 来解决这个问题,我对这一举动感到非常满意,因为它更快速、更容易处理
-
我必须使用 kSoap,因为我们正在为 Iphone 开发相同的应用程序并且我们想使用相同的网络服务。
-
我添加了完整代码,但此代码在 api 版本 10 下完美运行
-
只是为了概述,阅读这篇文章:codeproject.com/Articles/45275/… 它演示了来自单个 Web 服务的 SOAP 和 Json 响应。就个人而言,我建议使用 Json,因为与 SOAP 相比,它需要更少的数据来传输相同的信息,它简单、易于掌握并且在 Android 中原生支持。此外,您可以阅读 stackoverflow.com/questions/2851117/… 和 encosia.com/asmx-and-json-common-mistakes-and-misconceptions
-
如果
sorgu=0是您的 web 方法的输入参数,那么作为有效的 json 参数,它应该是{"sorgu": 0}
标签: android ksoap2 android-ksoap2