当我将数据发布到WCF服务时,我的Java代码总是返回Bad Request 400

时间:2012-09-21 11:11:55

标签: c# wcf post java-me

我有这个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.";
            }
        }

最终网址是:: http://192.168.1.11/Service.Svc/PostComments

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

我收到此错误:

  

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

     

在   System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(消息   消息,对象[]参数)at   System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(消息   消息,对象[]参数)at   System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(消息   消息,对象[]参数)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.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&安培;   rpc)at   System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&安培;   rpc)at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean   isOperationContextSet)

当我尝试在服务中运行Post方法时,这是错误..我不知道如何解决..但它在.net应用程序中工作得很好。 但不是在JAVA。 如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

抱歉,这是该死的内容类型错误: 我将Content-Type设置为application / json

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

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

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