关于Soap中的XmlPullParserException的一个问题

zkw261123 2017-11-04 04:32:10
是这样的
我想编一个程序,实现安卓通过Web Service间接连接SQL Server。
Web Service已经写好了,调试通过。
问题出在安卓端:
程序捕获了一个XmlPullParserException异常,错误信息为:
org.xmlpull.v1.XmlPullParserException: expected: START_TAG 
{http://www.w3.org/2001/12/soap-envelope}
Envelope (position:START_TAG <{http://schemas.xmlsoap.org/soap/envelope/}
soap:Envelope>@1:208 in java.io.InputStreamReader@c4b0077)


我不知道问题在哪里,于是我想来这里问问各位。
附上代码
连接Web Service的代码:

import android.util.Log;

import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;

/**
* Created by ZSpirytus on 2017/11/3.
*/

public class WebServiceConnector {

private static final String TAG = "WebServiceConnector";
private static final String WSDL_URI = "http://39.***.***.***:8080/?wsdl";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String METHOD_GETBASICINFOBYSNO = "getBasicInfoBySno";
private static final String PARAM_SNO = "Sno";
private static final String SOAPACTION = NAMESPACE+METHOD_GETBASICINFOBYSNO;

public static String[] getBasicInfoBySno(String sno){
SoapObject request = new SoapObject(NAMESPACE, METHOD_GETBASICINFOBYSNO);
request.addProperty(PARAM_SNO ,sno);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER12);
envelope.bodyOut = request;
envelope.dotNet = true;
try{
HttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI);
httpTransportSE.call(SOAPACTION, envelope);
}catch (XmlPullParserException xmle){
Log.d(TAG,"Class: GetStudentBasicInfoBySno catch an XmlPullParserException!");
xmle.printStackTrace();
}catch (IOException ie){
ie.printStackTrace();
}
SoapObject object = (SoapObject) envelope.bodyIn;
String[] result = new String[6];
for(int i = 0;i<result.length;i++){
result[i] = object.getProperty("getBasicInfoBySnoResult").toString();
}
return result;
}


联网子线程的代码:

import android.os.AsyncTask;
import android.util.Log;

/**
* Created by ZSpirytus on 2017/11/4.
*/

public class GetStudentBasicInfoBySno extends AsyncTask<String, Integer, String[]> {

private static final String TAG = "GetStudentBasicInfoBySn";
private String[] aaa = new String[6];
@Override
protected String[] doInBackground(String... params) {
try {
String[] result = WebServiceConnector.getBasicInfoBySno("15251102222");
return result;
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG,"Class: GetStudentBasicInfoBySno catch an Exception!");
return null;
}
}

@Override
protected void onPostExecute(String[] result) {
aaa = result;
}

public String[] getResult(){
return aaa;
}
}


谢谢!!!
...全文
145 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧