0
KSOAP을 사용하여 Android에서 다음 비누 요청을하려고합니다. 중첩 된 soap 객체의 목록을 포함합니다. 그러나 오류가 발생하면 뭔가 잘못하고있을 것입니다.Android ksoap 중첩 된 비누 개체가 요청 오류를 읽을 수 없습니다.
다음과 같이 내가 생성하려고 요청은 다음과 같습니다
이public boolean setAttendanceMarks(List<Mark> list) throws Exception
{
boolean result = false;
String methodName = "SetAttendanceMarks";
String soapAction = getHost() + "SetAttendanceMarks";
SoapObject lessMarksN = new SoapObject(getHost(), "LessonMarks");
for (Mark m : list)
{
PropertyInfo smProp =new PropertyInfo();
smProp.setName("LessonMark");
smProp.setValue(m);
smProp.setType(Mark.class);
lessMarksN.addProperty(smProp);
}
PropertyInfo cProp =new PropertyInfo();
cProp.setName("Count");
cProp.setValue(list.size());
cProp.setType(Integer.class);
SoapObject lessMarks = new SoapObject(getHost(), "LessonMarks");
lessMarks.addProperty(cProp);
lessMarks.addSoapObject(lessMarksN);
PropertyInfo sProp =new PropertyInfo();
sProp.setName("strSessionToken");
sProp.setValue(mSession);
sProp.setType(String.class);
SoapObject request = new SoapObject(getHost(), methodName);
request.addProperty(sProp);
request.addSoapObject(lessMarks);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(getURL());
androidHttpTransport.debug = true;
androidHttpTransport.call(soapAction, envelope);
String a = androidHttpTransport.requestDump;
String b = androidHttpTransport.responseDump;
SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
SoapObject res = (SoapObject) resultsRequestSOAP.getProperty(0);
String resultStr = res.getPropertyAsString("Result");
if (resultStr.contentEquals("OK"))
{
result = true;
}
return result;
}
다음과 내가 오류가 될 때 : 다음과 같이
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<SetAttendanceMarks xmlns="http://hostname.net/">
<strSessionToken>string</strSessionToken>
<LessonMarks>
<Count>int</Count>
<LessonMarks>
<LessonMark>
<StudentId>int</StudentId>
<EventInstanceId>int</EventInstanceId>
<Mark>string</Mark>
</LessonMark>
<LessonMark>
<StudentId>int</StudentId>
<EventInstanceId>int</EventInstanceId>
<Mark>string</Mark>
</LessonMark>
</LessonMarks>
</LessonMarks>
</SetAttendanceMarks>
</soap12:Body>
</soap12:Envelope>
내 코드는
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Sender</soap:Value>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang="en">Server was unable to read request. ---> There is an error in XML document (1, 383). ---> The specified type was not recognized: name='LessonMarks', namespace='http://gsdregapp.net/', at <LessonMarks xmlns='http://gsdregapp.net/'>.</soap:Text>
</soap:Reason>
<soap:Detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 어떤 도움을 주셔서 고맙게 생각합니다!
감사를 찾을 수에 대해 슈어 없습니다. 불행히도이 프로젝트의 마감 기한이 너무 길어서 다른 접근법을 취해야했습니다. XML을 구성하고 표준 HTTP Post를 사용하여 서버에 업로드하기로 결정했습니다. 조금 더 시간을 소비하지만 일을 끝냈습니다. 미래에 시간을 갖게되면 귀하의 제안이 제대로 작동하는지보고하겠습니다. 다시 한 번 감사드립니다! – Smalesy