ksoap2-androidで複合型をwcfサービスに送信しようとしました。 Basiclyは私がWebサービスから複雑なデータタイプを受け取ることができましたが、私は1を送信しようとすると、私は次のエラーを取得することガイドhttp://seesharpgears.blogspot.de/2010/10/ksoap-android-web-service-tutorial-with.html を追っ:複合型をksoap2-androidからwcfサービスに送信する方法は? wcfサービスの設定方法
a:DeserializationFailed
The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:es.
The InnerException message was 'Error in line 1 position 373. Element 'http://tempuri.org/:es' contains data from a type that maps to the name 'http://tempuri.org/:EventSeries'.
The deserializer has no knowledge of any type that maps to this name.
Consider using a DataContractResolver or add the type corresponding to 'EventSeries' to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding it to the list of known types passed to DataContractSerializer.'.
Please see InnerException for more details.
の質問はどのように私はこの問題を解決することができますです?エラーはエンベロープに返されます。 チュートリアルで説明したようにすべてを行い、複合型を受信すると、サーバー側でエラーが発生すると思いますが、残念ながら私はwcfサービスについて何も知らないのです。 wcfサービスを変更するにはどうすればいいですか?
エラーメッセージで説明したように我々は
[ServiceKnownType(typeof(EventSeries))]
のようなものを試してみましたが、それは、Webサービスに
メソッドを助けていないが、私は私の添付その
public int InsertEventSeriesForAndroidVIntES(EventSeries es)
{
...
}
のように見えますアンドロイドコード、私は何かをねじ込んだ場合。
SoapObject request = new SoapObject("http://tempuri.org/, "InsertEventSeriesForAndroidVIntES");
EventSeries es = new EventSeries(10, "call Test");
PropertyInfo propertyInfo = new PropertyInfo();
propertyInfo.setName("es");
propertyInfo.setNamespace("http://tempuri.org");
propertyInfo.setValue(es);
propertyInfo.setType(EventSeries.class);
request.addProperty(propertyInfo);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
envelope.addMapping(request.getNamespace(), "EventSeries", EventSeries.class);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call("http://tempuri.org/IDiversityService/InsertEventSeriesForAndroidVIntES", envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();