我的java服务器API使用CXFClient测试是可以的:
result = CXFClient.getWebSeriveResult(wsUrl, "detailQuery", "{\"f\":\"4\",\"g\":\"1\",\"d\":\"20170301\",\"e\":\"0\",\"b\":\"510000RS\",\"c\":\"20100301\",\"a\":\"liaomalin\",\"h\":\"A1111\"}");
System.out.println(result);
结果中有数据,请参阅快照:
同样在SoapUI5.3.0测试也可以:
您看到有重新开始数据。
在android中我调用API:
private void getDataForNet(int index) {
Map<String, String> params = new HashMap<>();
params.put("a", "liaomalin");
params.put("b", "510000RS");
if (0 == type) {
params.put("c", DateUtil.formatDate(new Date(), DateUtil.YEAR_MONTH_DATE));
// params.put("c", DateUtil.formatDate(new Date(), "20100301"));
} else if (1 == type) {
// params.put("c", DateUtil.formatDate(new Date(), DateUtil.YEAR_MONTH_NO_SYMBOL) + "01");
params.put("c", DateUtil.formatDate(new Date(), "20100301"));
}
params.put("d", DateUtil.formatDate(new Date(), DateUtil.YEAR_MONTH_DATE));
params.put("e", String.valueOf(workType));
params.put("f", "4");
params.put("g", String.valueOf(index));
params.put("h", "A1111");
String json = new Gson().toJson(params);
Log.e("TAG", json);
HashMap<String, String> map = new HashMap<>();
map.put("agr0", json);
WebServiceUtils.callWebService(this, "DataQueryService?wsdl", "detailQuery", map,
getString(R.string.dialog_loading), false,
new WebServiceUtils.WebServiceCallBack() {
@Override
public void callBack(String result) {
parseResult(result);
}
@Override
public void failed() {
DialogToastUtil.getDialogUtil().showToast(StatisticsListActivity.this,
getResources().getString(R.string.toast_net_check_error), Toast.LENGTH_SHORT);
}
});
}
日志数据失败:
03-02 10:32:03.106 14877-14877 / cn.cinsoft.smart3 D / dalvikvm:GC_FOR_ALLOC释放745K,7%免费11769K / 12580K,暂停1ms,总计2ms 03-02 10:32:03.122 14877-14877 / cn.cinsoft.smart3 E / TAG:{“f”:“4”,“g”:“1”,“d”:“20170302”,“e”: “0”, “b”: “510000RS”, “C”: “20100301”, “一个”: “liaomalin”, “H”: “A1111”} 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:org.xmlpull.v1.XmlPullParserException:expected:END_TAG {http://schemas.xmlsoap.org/soap/envelope/}正文(位置:END_TAG http:// schemas.xmlsoap.org/soap/envelope/}soap:Fault>@1:266 in java.io.InputStreamReader@4abe7810) 03-02 10:32:03.1 ** ***** - * 5110 / cn.cinsoft.smart3 W / System.err:at org.kxml2.io.KXmlParser.require(KXmlParser.java:2056) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:138) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at org.ksoap2.transport.Transport.parseResponse(Transport.java:63) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at cn.cinsoft.smart3.utils.WebServiceUtils $ 2.run(WebServiceUtils.java:105) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:422) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at java.util.concurrent.FutureTask.run(FutureTask.java:237) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) 03-02 10:32:03.146 14877-15110 / cn.cinsoft.smart3 W / System.err:at java.lang.Thread.run(Thread.java:841) 03-02 10:32:03.174 14877-14877 / cn.cinsoft.smart3 W / EGL_emulation:eglSurfaceAttrib未实现 03-02 10:32:03.186 14877-14877 / cn.cinsoft.smart3 W / EGL_emulation:eglSurfaceAttrib未实现 03-02 10:32:03.194 14877-14877 / cn.cinsoft.smart3 D / callWebService:failednull
我不知道某个地方是否配置不正确。在java中使用其他API编写使用此方法调用是正常的,但这一次失败。
为什么使用android监视器调用此API失败?
答案 0 :(得分:1)
可能是由ksoap版本引起的。
您尝试更新到较新版本。
如果你的kSoap版本低于2.4,你应该至少升级到2.5.8。