我有这个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。 如何解决这个问题。
答案 0 :(得分:1)
抱歉,这是该死的内容类型错误: 我将Content-Type设置为application / json
之后,错误是从JAVA代码获取原始数据 我告诉他们给我发送JSON对象意味着纯粹的Json数据。
之后剩下的错误只是外键值冲突。 在完成所有这些之后,最后解决了错误。
但是也不要忘记检查你的Java代码,因为你的代码可能是问题,检查所有代码的内容类型。