我有这个 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 中。如何解决这个问题。