У меня проблема с KSOAP2 для Android с зависимостями на устройстве Android.KSOAP 2 со сложными объектами
я следовал инструкции от seesharpgears http://seesharpgears.blogspot.com/2010/10/ksoap-android-web-service-tutorial-with.html
У меня есть сервер Embarcadero C++ Builder XE2 с этой функцией, чтобы пройти сложный тип данных.
Функция заключается в следующем:
Я попытался создать фиктивный метод ведьмой возвращается его просьбу.
Я создал класс под названием Категория.
Но я не знаю, почему, я получаю до сих пор эти данные с типом данных вектора:
Вот мой код:
public void getSettings(String sessionId){
SoapObject Request = new SoapObject(ProgramSettings.NAMESPACE, "GetCategoryById");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = false;
envelope.setOutputSoapObject(Request);
Category C = new Category();
envelope.addMapping("urn:@:TrackNavMobile", "Category",new Category().getClass());
// addMapping("urn:@:TrackNavMobile", "Category", cat.getClass());
String url="http://" + readIp() + ":" + readPort() +"/soap/ITrackNavMobile";
HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
/*
* Call the web service and retrieve result ... how luvly <3
*
* */
try
{
androidHttpTransport.call(ProgramSettings.SOAP_ACTION, envelope);
SoapObject response = (SoapObject)envelope.bodyIn;
//TextView tv = (TextView)findViewById(R.id.textView1);
for(int i=0;i<response.getPropertyCount();i++)
{
new AlertDialog.Builder(this)
.setMessage(response.getProperty(0).toString())
.setNeutralButton("OKi", null)
.show();
//if complex type is present then you can cast this to SoapObject and if primitive type is returned you can use toString() to get actuall value.
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
Это результат со свойствами ... Когда я отладка вызывает метод setCategory, написанный на Java с правильными значениями ... но не возвращает их. [Категория: [email protected], return: [email protected]]
Это мой манекен для сервера, который называется:
Category* TTrackNavMobileImpl::GetCategoryById(){
Category* setup= new Category();
setup->Name="Thomas";
setup->CategoryId=1;
setup->Description="Test1";
return setup;
}
Это RequestDump:
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns:d="http://www.w3.org/2001/XMLSchema"
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header />
<v:Body>
<n0:GetCategoryById id="o0" c:root="1"
sessionId="FFEF196A3940136D7C141C4F01965D7D"
xmlns:n0="http://tempuri.org/" />
</v:Body>
</v:Envelope>
И это ResponseDump:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:NS1="urn:TrackNavMobile-ITrackNavMobile">
<NS1:GetCategoryByIdResponse xmlns:NS2="urn:@:TrackNavMobile">
<NS2:Category id="1" xsi:type="NS2:Category">
<Name xsi:type="xsd:string">Thomas</Name>
<Description xsi:type="xsd:string">Test1</Description>
<CategoryId xsi:type="xsd:int">1</CategoryId>
</NS2:Category><return href="#1"/>
</NS1:GetCategoryByIdResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Кто-то идея?
Спасибо за ур ответ. Когда я пытаюсь с getResponse, я получаю во время отладки в bodyout.properties setup-> Name = "Thomas"; setup-> CategoryId = 1; setup-> Описание = "Test1"; Категория: Категория {Name = "Thomas"; CategoryId = 1; Описание = «Тест1»; }, return: Категория {Name = "Thomas"; CategoryId = 1; Описание = «Тест1»; }] , но он не выводит их автоматически автоматически. Спасибо –
Это будет зависеть от вас класс категории на стороне java, если отображение работает. Проверьте примеры о сортировке. Существуют различные ссылки на wiki. –
Можете ли вы рассказать мне ссылку о маршаллинге ... do u означают этот: http://code.google.com/p/ksoap2-android/wiki/CodingTipsAndTricks большое спасибо –