1

我有这个 WCF 服务:

    [ServiceContract]
        public interface IService
        {
            [OperationContract]
            [WebInvoke(Method = "POST", UriTemplate = "/PostComments", BodyStyle = WebMessageBodyStyle.Wrapped,
                       RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
            string PostComments(string ItemId, string Comments, string FullName, string Location);
        }

    [DataContract]
        public class Comment
        {
            [DataMember]
            public string ItemId { get; set;}
            [DataMember]
            public string Comments { get; set;}
            [DataMember]
            public string FullName { get; set;}
            [DataMember]
            public string Location { get; set;}
        }

public class Service : IService
    {
       int i = 0;
       public string PostComments(string ItemId, string Comments, string FullName, string Location)
         {
            int Id;
            Id = Convert.ToInt32(ItemId);           
                adp = new SqlDataAdapter("insert into tblComment(intId,strComments,strFullName,strLocation,dtPosted,blnApprove) values("+Id+",'"+Comments+"','"+FullName+"','"+Location+"',GetDate(),1)", offcon);
                adp.Fill(ds1,"Comment");
                DataTable dt = ds1.Tables["Comment"];
                i++;
            }
            if (i > 0)
            {
                return "Comment Successfully Submitted.";
            }
            else
            {
                return "Comment falied to Submit.";
            }
        }

最终 URL 是 ::http://192.168.1.11/Service.Svc/PostComments

现在我的主要问题是当客户端是 JAVA 时如何在 WCF 中执行 POST 操作?

我得到这个错误:

服务器在处理请求时遇到错误。异常消息是“传入消息具有意外消息格式“原始”。该操作的预期消息格式为“Xml”、“Json”。这可能是因为尚未在绑定上配置 WebContentTypeMapper。有关详细信息,请参阅 WebContentTypeMapper 的文档。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:

在 System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(消息消息,对象 [] 参数)在 System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(消息消息,对象 [] 参数)在 System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(消息消息,Object[] 参数)在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime 中的 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)。ProcessMessage4(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) 在 System. System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 的 ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(布尔 isOperationContextSet)ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(布尔 isOperationContextSet)

这是我尝试在服务中运行 Post 方法时出现的错误。我不知道如何修复。但它在 .net 应用程序中运行良好。但不是在 JAVA 中。如何解决这个问题。

4

1 回答 1

0

对不起,伙计们,这是该死的内容类型错误:我将内容类型设置为 application/json

在此之后,错误是关于从 JAVA 代码获取原始数据,我告诉他们向我发送 JSON 对象意味着纯 Json 数据。

在此之后,剩下的错误是只有外键值冲突。完成所有这些后,错误终于解决了。

但也不要忘记检查您的 Java 代码,因为您的代码可能是检查所有代码的内容类型的问题。

于 2012-09-21T13:43:44.920 回答