Android用のモノドロイドまたはXamarinを使用し始めています。既に.NETで使用しているほとんどのコードを再利用します。Xamarin Android - 複雑なパラメータ(オブジェクト)でRestをリクエストすると例外がスローされます.NETでうまく動作します(チャンネルファクトリを使用)
私のアンドロイドとiosアプリケーションで必要なことの1つは、jsonエンコーディングでwcf restを使用してWebサービスを呼び出すことです。
だから私のコードは単純です:
私が始めるのに十分なシンプルWebHttpBinding webBinding = new WebHttpBinding();
EndpointAddress endPointAddress = new EndpointAddress("http://192.168.126.24:8025/Services/SecurityManagement");
ChannelFactory<ISecurityManagement> newFactory = new ChannelFactory<ISecurityManagement>(webBinding, endPointAddress);
newFactory.Endpoint.Behaviors.Add(new WebHttpBehavior() { DefaultOutgoingRequestFormat = System.ServiceModel.Web.WebMessageFormat.Json, DefaultOutgoingResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json });
newFactory.Endpoint.Behaviors.Add(new RestEndPointBehavior());
ISecurityManagement newProxy = newFactory.CreateChannel();
ValidateUserExistenceOutput output = newProxy.ValidateUserExistence(new ValidateUserExistenceInput() { Domain = "CRITICAL", Username = "myUserName" });
(少なくとも、それはモノについての私の考えだった、モノラルで.NETの再利用で作る)
しかし、私は実行しますこのコード私は次の例外例外を取得:にオブジェクトを変換するとき
System.NotSupportedException: Loading...
07-25 10:43:40.922 E/mono (1950):
07-25 10:43:40.922 E/mono (1950): Unhandled Exception:
07-25 10:43:40.922 E/mono (1950): System.NotSupportedException: Conversion from the argument parameterType 'BusinessOrchestration.SecurityManagement.InputObjects.ValidateUserExistenceInput' is not supported
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertValueToString (System.Object parameter, System.Type parameterType) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unkno07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.Description.WebHttpBehavior+ClientPairFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.MonoInternal.ClientRuntimeChannel.CreateRequest (System.ServiceModel.Dispatcher.ClientOperation op, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.MonoIn
07-25 10:43:40.922 E/mono-rt (1950): [ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Conversion from the argument parameterType 'BusinessOrchestration.SecurityManagement.InputObjects.ValidateUserExistenceInput' is not supported
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertValueToString (System.Object parameter, System.Type parameterType) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Description.WebHttpBehavior+ClientPairFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.MonoInternal.ClientRuntimeChannel.CreateRequest (System.ServiceModel.Dispatcher.ClientOperation op, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.Servic
The program 'Mono' has exited with code 0 (0x0).
私は、.NET 4.5アプリケーションの正確な同じコードを使用していますし、それが正常に動作し、そのが失敗しているようです文字列(jsonの文字列、私は思います)。
.NETで動作するので、モノで直接動作する必要がありますか?
複雑な入力オブジェクトを持つサービスはありますか? これらの通話にはどのAPIを使用しますか?すべてのあなたの助けを控え
おかげで、彼らはマイクロソフト固有のものですので、あなたのコード内で使用されるオブジェクトのいくつかはモノに移植されていませんので、それは動作しません
ルイスPinho
この問題を解決しましたか?私は一歩前進することができない同じ問題に直面しています。これについての情報はありませんあなたは何か考えがあれば助けてください。 – dafodil
同様の問題がここに記述されています:https://stackoverflow.com/questions/44650314/mono-rest-service-not-supporting-post-method – Hcorg
これは2013年からの質問ですか? –