Estoy utilizando el siguiente código JQuery \ JavaScript para comunicarme con un servicio WCF 4 REST.Intentar obtener un JQuery Post para comunicarse con WCF, pero no se aceptan los datos JSON
<script>
var serviceUrl = "http://services.xiine.com/Xiine/Live/AccountService/rest/json/Login";
var userInfo = {
"IsNotEncrypted":true,
"Password":null,
"UserName":null
};
var loginSuccess = function(data, textStatus, jqXHR){
console.log("yay");
};
var loginError = function(){
console.log("oh no");
};
$.post(serviceUrl , userInfo, loginSuccess);
$.post(serviceUrl , loginSuccess);
</script>
estoy tratando de establecer por qué es que el servicio correctamente devolver un valor falso cuando no paso los datos de usuario:
$.post(serviceUrl , loginSuccess);
a diferencia de cuando tengo que pasar los datos del usuario, en ese punto da un error POST 400 (Solicitud incorrecta).
$.post(serviceUrl , userInfo, loginSuccess);
Estoy seguro de que tiene que ver con la forma en que el objeto JSON, userInfo, se está construyendo o interpretado, y puedo publicar Fiddler 2 o WireShark desmontes, si eso ayuda. Solo déjame saber ...
Realmente no tengo acceso a cambiar el lado WCF del servicio, así que espero que haya algo que pueda hacer para que esto funcione.
Gracias!
Edición
me dieron un poco más de información ... Al parecer, el problema es que el servidor responde con el siguiente error:
The server encountered an error processing the request. The exception message is 'The incoming message >has an unexpected message format 'Raw'. The expected message formats for the operation are 'Xml', >'Json'. This can be because a WebContentTypeMapper has not been configured on the binding. See the >documentation of WebContentTypeMapper for more details.'. See server logs for more details. The >exception stack trace is:
at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
así que estoy pensando que necesito figura cómo hacer que el objeto atraviese el cable como un objeto JSON a través de un método JQuery.post().
Más información --- Una vez más ...
bien ... No hay app.config o web.config, como tal.
Esto es lo que puedo obtener en cuanto a los contratos y el código y lo que no.
[ServiceContract]
public interface IAccount
{
[OperationContract]
bool Login(UserInformation user);
}
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class AccountService : IAccount
{
public bool Login(UserInformation user)
{
//stuff...
}
}
[DataContract]
public class UserInformation
{
[DataMember(IsRequired = true)]
public string UserName;
[DataMember(IsRequired = true)]
public string Password;
[DataMember(IsRequired = true)]
public bool IsNotEncrypted;
}
public interface IUserInformation
{
UserInformation UserInformation { get; set; }
}
Por favor, publique su configuración del servicio WCF. –
Lamentablemente, no tengo acceso ... – Joe