Android SOAPWeb服务接收的xml中为什么没有结束标记?
我将Ksoap2库用于Soap web服务,因为在android中没有直接的方法可以做到这一点。使用该选项后,我成功地从服务器获得回复。它具有起始标记“”,xml响应也应以该标记结束。但我没有得到结束标签。这是我得到的Android SOAPWeb服务接收的xml中为什么没有结束标记?,android,xml,soap,Android,Xml,Soap,我将Ksoap2库用于Soap web服务,因为在android中没有直接的方法可以做到这一点。使用该选项后,我成功地从服务器获得回复。它具有起始标记“”,xml响应也应以该标记结束。但我没有得到结束标签。这是我得到的 <NewDataSet> <Table> <AgentHangup>true</AgentHangup> <CallDetailId>140120151439395690100016</CallDetailId&g
<NewDataSet>
<Table>
<AgentHangup>true</AgentHangup>
<CallDetailId>140120151439395690100016</CallDetailId>
<CallID>3171B65415000200</CallID>
<CorrelatorId />
<CallDuration>9</CallDuration>
<EncryptedCall>false</EncryptedCall>
<CallDate>2015/01/14 14:39:39</CallDate>
<CalledBy>9010</CalledBy>
<CalledTo>9000</CalledTo>
<IsExternal>false</IsExternal>
<RecorderType>PRIMARY</RecorderType>
<FirstName>fawad</FirstName>
<LastName>khan</LastName>
<Comments />
<FlagID>1</FlagID>
<FlagImage>1.gif</FlagImage>
<AF>C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0004\32_14012015 143939599_0016_9010.wav</AF>
<CallDirection>O</CallDirection>
<FLAGTEXT>Training required</FLAGTEXT>
<Archive>false</Archive>
<ExtensionValue>9010</ExtensionValue>
<GraphValue />
</Table>
<Table>
<AgentHangup>true</AgentHangup>
<CallDetailId>140120151439382290010016</CallDetailId>
<CallID>3171B65415000200</CallID>
<CorrelatorId />
<CallDuration>11</CallDuration>
<EncryptedCall>false</EncryptedCall>
<CallDate>2015/01/14 14:39:38</CallDate>
<CalledBy>9010</CalledBy>
<CalledTo>9001</CalledTo>
<IsExternal>false</IsExternal>
<RecorderType>PRIMARY</RecorderType>
<FirstName>Jack</FirstName>
<LastName>Rayan</LastName>
<Comments />
<FlagID>1</FlagID>
<FlagImage>1.gif</FlagImage>
<AF>C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0002\30_14012015 143938287_0016_9001.wav</AF>
<CallDirection>I</CallDirection>
<FLAGTEXT>Training required</FLAGTEXT>
<Archive>false</Archive>
<ExtensionValue>9001</ExtensionValue>
<GraphValue />
</Table>
<Table>
<AgentHangup>false</AgentHangup>
<CallDetailId>140120151439384490000016</CallDetailId>
<CallID>2A71B65414000200</CallID>
<CorrelatorId />
<CallDuration>11</CallDuration>
<EncryptedCall>false</EncryptedCall>
<CallDate>2015/01/14 14:39:38</CallDate>
<CalledBy>9010</CalledBy>
<CalledTo>9000</CalledTo>
<IsExternal>false</IsExternal>
<RecorderType>PRIMARY</RecorderType>
<FirstName>adnan</FirstName>
<LastName>akhtar</LastName>
<Comments />
<FlagID>1</FlagID>
<FlagImage>1.gif</FlagImage>
<AF>C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0001\31_14012015 143938537_0016_9000.wav</AF>
<CallDirection>I</CallDirection>
<FLAGTEXT>Training required</FLAGTEXT>
<Archive>false</Archive>
<ExtensionValue>9000</ExtensionValue>
<GraphValue />
</Table>
<Table>
<AgentHangup>false</AgentHangup>
<CallDetailId>140120151439354290010015</CallDetailId>
<CallID>3171B65415000200</CallID>
<CorrelatorId />
<CallDuration>1</CallDuration>
<EncryptedCall>false</EncryptedCall>
<CallDate>2015/01/14 14:39:35</CallDate>
<CalledBy>9010</CalledBy>
<CalledTo>9001</CalledTo>
<IsExternal>false</IsExternal>
<RecorderType>PRIMARY</RecorderType>
<FirstName>Jack</FirstName>
<LastName>Rayan</LastName>
<Comments />
<FlagID>1</FlagID>
<FlagImage>1.gif</FlagImage>
<AF>C:\Program Files (x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0002\28_14012015 143935505_0015_9001.wav</AF>
<CallDirection>I</CallDirection>
<FLAGTEXT>Training required</FLAGTEXT>
<Archive>false</Archive>
<ExtensionValue>9001</ExtensionValue>
<GraphValue />
</Table>
<Table>
<AgentHangup>true</AgentHangup>
<CallDetailId>140120151439355890100015</CallDetailId>
<CallID>3171B65415000200</CallID>
<CorrelatorId />
<CallDuration>2</CallDuration>
<EncryptedCall>false</EncryptedCall>
<CallDate>2015/01/14 14:39:35</CallDate>
<CalledBy>9010</CalledBy>
<CalledTo>9001</CalledTo>
<IsExternal>false</IsExternal>
<RecorderType>PRIMARY</RecorderType>
符合事实的
140120151439395690100016
3171B65415000200
9
错误的
2015/01/14 14:39:39
9010
9000
错误的
主要的,重要的
法瓦德
可汗
1.
1.gif
C:\Program Files(x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0004\32\U 14012015 143939599\U 0016\U 9010.wav
O
所需培训
错误的
9010
符合事实的
140120151439382290010016
3171B65415000200
11
错误的
2015/01/14 14:39:38
9010
9001
错误的
主要的,重要的
杰克
拉扬
1.
1.gif
C:\Program Files(x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0002\30\U 14012015 143938287\U 0016\U 9001.wav
我
所需培训
错误的
9001
错误的
140120151439384490000016
2A71B65414000200
11
错误的
2015/01/14 14:39:38
9010
9000
错误的
主要的,重要的
阿德南
阿赫塔
1.
1.gif
C:\Program Files(x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0001\31\U 14012015 143938537\U 0016\U 9000.wav
我
所需培训
错误的
9000
错误的
140120151439354290010015
3171B65415000200
1.
错误的
2015/01/14 14:39:35
9010
9001
错误的
主要的,重要的
杰克
拉扬
1.
1.gif
C:\Program Files(x86)\Alcatel-Lucent\OmniPCXRecord Suite\OmniPCXRecord\OmniPCXRecordAudio\Repository\from\150114\0002\28\U 14012015 143935505\U 0015\U 9001.wav
我
所需培训
错误的
9001
符合事实的
140120151439355890100015
3171B65415000200
2.
错误的
2015/01/14 14:39:35
9010
9001
错误的
主要的,重要的
请看,在开始时没有这样的结束标记(在本例中为NewDataSet)
我使用以下类来获得响应:
public class SoapRequests {
private static final boolean DEBUG_SOAP_REQUEST_RESPONSE = true;
private static final String MAIN_REQUEST_URL = "http://192.168.2.152/OmniPCXRecord/recordservice.asmx";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String SOAP_ACTION = "http://tempuri.org/";
private static String SESSION_ID;
public static String Toaster=null ;
private final void testHttpResponse(HttpTransportSE ht) {
ht.debug = DEBUG_SOAP_REQUEST_RESPONSE;
if (DEBUG_SOAP_REQUEST_RESPONSE) {
Log.v("SOAP RETURN", "Request XML:\n" + ht.requestDump);
Log.v("SOAP RETURN", "\n\n\nResponse XML:\n" + ht.responseDump)
;
Toaster=ht.responseDump;
}
}
public String getData(String fValue) {
String data = null;
String methodname = "SearchCalls";
SoapObject request = new SoapObject(NAMESPACE, methodname);
//3
request.addProperty("username", "admin");
//
request.addProperty("password", "admin");
//5
request.addProperty("FirstNameCriteria", "");
//6
request.addProperty("FirstName", "");
//7
request.addProperty("LastNameCriteria", "");
//8
request.addProperty("LastName", "");
//9
request.addProperty("GroupSearchOption", "");
//10
request.addProperty("GroupName", "");
//11
request.addProperty("EncryptedCallsCriteria", "");
//12
request.addProperty("AssociatedAgentCriteria", "");
//13
request.addProperty("CalledByCriteria", "");
//14
request.addProperty("CalledBy", "");
//15
request.addProperty("CalledToCriteria", "");
//16
request.addProperty("CalledTo", "");
//17
request.addProperty("CalledDateSearchCriteria", "Past_N_days");
//18
request.addProperty("NumberOfDays", "1");
//19
request.addProperty("StartDate", "");
//20
//I have round about 100 of parameters to send and they are generated successfully
//i am sharing here few just for example
Log.v("Final Property is",request.toString());
SoapSerializationEnvelope envelope = getSoapSerializationEnvelope(request);
HttpTransportSE ht = getHttpTransportSE();
try {
ht.call(SOAP_ACTION + methodname, envelope);
testHttpResponse(ht);
SoapPrimitive resultsString = (SoapPrimitive)envelope.getResponse();
// List<HeaderProperty> COOKIE_HEADER = (List<HeaderProperty>) ht.getServiceConnection().getResponseProperties();
// for (int i = 0; i < COOKIE_HEADER.size(); i++) {
// String key = COOKIE_HEADER.get(i).getKey();
// String value = COOKIE_HEADER.get(i).getValue();
//
// if (key != null && key.equalsIgnoreCase("set-cookie")) {
// SoapRequests.SESSION_ID = value.trim();
// Log.v("SOAP RETURNCookiee", "Cookie :" + SoapRequests.SESSION_ID+key);
// // Log.v("SOAP RETURNCookiee", "Cookie :" + SoapRequests.SESSION_ID);
// break;
// }
// }
data = resultsString.toString();
} catch (SocketTimeoutException t) {
t.printStackTrace();
} catch (IOException i) {
i.printStackTrace();
} catch (Exception q) {
q.printStackTrace();
}
return data;
}
private final SoapSerializationEnvelope getSoapSerializationEnvelope(SoapObject request) {
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//change from orgnl
//envelope.dotNet = true;
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setAddAdornments(false);
envelope.setOutputSoapObject(request);
return envelope;
}
private final HttpTransportSE getHttpTransportSE() {
HttpTransportSE ht = new HttpTransportSE(Proxy.NO_PROXY,MAIN_REQUEST_URL,6000);
ht.debug = true;
ht.setXmlVersionTag("<?xml version=\"1.0\" encoding= \"UTF-8\" ?>");
return ht;
}
}
公共类SoapRequests{
私有静态最终布尔调试\u SOAP\u请求\u响应=true;
私有静态最终字符串MAIN\u请求\u URL=”http://192.168.2.152/OmniPCXRecord/recordservice.asmx";
私有静态最终字符串命名空间=”http://tempuri.org/";
私有静态最终字符串SOAP_ACTION=”http://tempuri.org/";
私有静态字符串会话\u ID;
公共静态字符串Toaster=null;
专用最终无效测试HttpResponse(HttpTransportSE-ht){
ht.debug=debug\u SOAP\u REQUEST\u RESPONSE;
if(调试\ SOAP \请求\响应){
Log.v(“SOAP返回”、“请求XML:\n”+ht.requestDump);
Log.v(“SOAP返回”,“\n\n\n响应XML:\n”+ht.responseDump)
;
烤面包机=ht.responseDump;
}
}
公共字符串getData(字符串fValue){
字符串数据=null;
String methodname=“SearchCalls”;
SoapObject请求=新的SoapObject(名称空间、方法名称);
//3
addProperty(“用户名”、“管理员”);
//
addProperty(“密码”、“管理员”);
//5
request.addProperty(“FirstNameCriteria”和“”);
//6
request.addProperty(“FirstName”和“”);
//7
request.addProperty(“LastNameCriteria”和“”);
//8
request.addProperty(“LastName”和“”);
//9
request.addProperty(“GroupSearchOption”和“”);
//10
request.addProperty(“GroupName”和“”);
//11
addProperty(“EncryptedCallsCriteria”,”);
//12
addProperty(“AssociatedAgentCriteria”和“”);
//13
addProperty(“CalledByCriteria”,即“”);
//14
addProperty(“CalledBy”,“CalledBy”);
//15
addProperty(“CalledToCriteria”,“CalledToCriteria”);
//16
addProperty(“CalledTo”,“CalledTo”);
//17
request.addProperty(“CalledDataSearchCriteria”,“过去的天数”);
//18
请求。添加属性(“天数”、“1”);
//19
request.addProperty(“StartDate”和“”);
//20
//我有大约100个参数要发送,并且它们被成功生成
//我在这里分享几个例子
Log.v(“最终属性为”,request.toString());
SoapSerializationEnvelope=getSoapSerializationEnvelope(请求);
HttpTransportSE ht=getHttpTransportSE();
试一试{
调用(SOAP\u ACTION+methodname,信封);
测试HttpResponse(ht);
SoapPrimitive结果字符串=(SoapPrimitive)信封。getResponse();
//列表COOKIE_头=(列表)ht.getServiceConnection().getResponseProperties();
//对于(int i=0;i