I second that. I've been using WCF REST services, with JSON formatting and https endpoints, and so far, the overall experience is great.
On 9 May 2012 14:11, Wally McClure <[email protected]> wrote: > Matt, > > If you are using WCF and having problems, what about setting the services > to be REST based? After experimentation, I am going to REST, JSON, and, if > you need security what about https? Or, have I missed something somewhere > on a list about this being bad? [image: Smile] > > Wally > > PS. I read about JSON support for .NET 4 via NuGet, but have no experience > with it. > ------------------------------ > Date: Wed, 9 May 2012 09:14:04 +0200 > From: [email protected] > To: [email protected] > Subject: [mono-android] Mono for Android's secure WCF services > > > Hi All, > > What is the state of Mono for Android's secure WCF services? Is it up to > SOAP 1.2 yet? > I am writing a Proof of Concept for an Android app that will interact with > WCF services, but am struggling to get the thing working. It will be an > enterprise app that will use WiFi and needs to be secure as it will be > carrying the companies confidential data. > > I did see you FAQ, but want to know for sure the current status: > http://support.xamarin.com/customer/portal/articles/142151-does-mono-for-android-support-wcf-and > this thread seems bad things about it: > http://mono-for-android.1047100.n5.nabble.com/Calling-arbitrary-web-services-td4959774.html > > I am trying to connect to a service that has > `TransportWithMessageCredential` security. However I am getting an error on > the server side: > > MessageSecurityException: > Security processor was unable to find a security header in the message. > This might be because the message is an unsecured fault or because there > is a binding mismatch between the communicating parties. > This can occur if the service is configured for security and the client is > not using security. > > > Server Config: > > <service > name="BrandDirector.ApplicationServer.Core.Services.UI.Products.Specifications.IngredientService" > > behaviorConfiguration="CredentialValidation"> > <endpoint address="/BasicHttp" > binding="basicHttpBinding" > bindingConfiguration="BDBasicHttpBindingWithSecurity" > > contract="BrandDirector.ApplicationServer.Core.Services.UI.Products.Specifications.IIngredientService" > /> > <endpoint contract="IMetadataExchange" binding="mexHttpBinding" > address="mex" /> > </service> > > <behavior name="CredentialValidation"> > <serviceMetadata httpGetEnabled="true" /> > <serviceDebug includeExceptionDetailInFaults="true" /> > <HttpStatusCode200Behavior /> > <serviceCredentials > type="BrandDirector.ApplicationServer.Core.Security.Authentication.PasswordServiceCredentials, > BrandDirector.ApplicationServer.Core.Security, Version=1.0.0.0, > Culture=neutral"> > <userNameAuthentication userNamePasswordValidationMode="Custom" > > customUserNamePasswordValidatorType="BrandDirector.ApplicationServer.Core.Security.CredentialValidator, > BrandDirector.ApplicationServer.Core.Security" /> > </serviceCredentials> > </behavior> > > <extensions> > <behaviorExtensions> > <add name="HttpStatusCode200Behavior" > type="BrandDirector.ApplicationServer.Core.Services.Common.ServiceModel.HttpStatusCode200BehaviorExtension, > BrandDirector.ApplicationServer.Core.Services.Common" /> > </behaviorExtensions> > > <basicHttpBinding> > <binding name="BDBasicHttpBindingWithSecurity" > messageEncoding="Text" maxReceivedMessageSize="655536"> > <security mode="TransportWithMessageCredential" > > <message clientCredentialType="UserName" /> > </security> > </binding> > </basicHttpBinding> > </extensions> > > > Client Code: > > public class Activity1 : Activity > { > private Button button; > const string address = "https:// > .../IngredientService.svc/BasicHttp"; > > protected override void OnCreate(Bundle bundle) > { > base.OnCreate(bundle); > > > var timeout = new TimeSpan(0, 1, 0); > var binding = new > BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential) > { > MessageEncoding = WSMessageEncoding.Text, > Security = > { > Transport = > { > ClientCredentialType = > HttpClientCredentialType.None, > ProxyCredentialType = HttpProxyCredentialType.None > }, > Message = > { > ClientCredentialType = > BasicHttpMessageCredentialType.UserName, > } > }, > HostNameComparisonMode = > HostNameComparisonMode.StrongWildcard, > MaxReceivedMessageSize = 655536, > ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas > { > MaxArrayLength = 655536, > MaxStringContentLength = 655536, > }, > SendTimeout = timeout, > OpenTimeout = timeout, > ReceiveTimeout = timeout, > }; > > > System.Net.ServicePointManager.ServerCertificateValidationCallback += > OnServerCertificateValidationCallback; > > SetContentView(Resource.Layout.Main); > > button = FindViewById<Button>(Resource.Id.MyButton); > > button.Click += delegate > { > client = new IngredientServiceClient(binding, new > EndpointAddress(address)); > var clientCredential = client.ClientCredentials.UserName; > clientCredential.UserName = "admin"; > clientCredential.Password = "KDNSG7"; > > client.BeginGetIngredients("e", callBack, null); > }; > } > > IngredientServiceClient client; > > private void callBack(IAsyncResult ar) > { > var result = client.EndGetIngredients(ar); > > button.Text = result.First().Name; > } > > // Ignore and certificate errors > private bool OnServerCertificateValidationCallback(object sender, > X509Certificate certificate, > X509Chain > chain, SslPolicyErrors sslPolicyErrors) > { > return true; > } > } > > This code works fine in WPF, the result is returned and all is well. I do > see from older threads and the FAQ that the WCF is still early in the > development cycle, but I just want to check if maybe I am doing something > wrong first. > > In Anticipation, > Matthew > > > _______________________________________________ Monodroid mailing list > [email protected] UNSUBSCRIBE INFORMATION: > http://lists.ximian.com/mailman/listinfo/monodroid > > _______________________________________________ > Monodroid mailing list > [email protected] > > UNSUBSCRIBE INFORMATION: > http://lists.ximian.com/mailman/listinfo/monodroid > > -- Gonçalo Oliveira
_______________________________________________ Monodroid mailing list [email protected] UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid
