C# 通过HttpClient调用Rest WCF服务
我正在尝试使用HttpClient通过Xamarin调用WCF Rest服务。我已经尝试了很多方法,但我需要传递一个自定义类型 我们收到Http错误400-请求错误 我创建了一个基本的测试来模拟Xamarin所做的,但仍然会得到相同的错误。代码如下: WCF服务接口/方法:C# 通过HttpClient调用Rest WCF服务,c#,rest,wcf,httpclient,C#,Rest,Wcf,Httpclient,我正在尝试使用HttpClient通过Xamarin调用WCF Rest服务。我已经尝试了很多方法,但我需要传递一个自定义类型 我们收到Http错误400-请求错误 我创建了一个基本的测试来模拟Xamarin所做的,但仍然会得到相同的错误。代码如下: WCF服务接口/方法: [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessa
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetBookedContacts")]
List<Contact> GetBookedContacts(ContactParameter contactParameter);
我们正在使用Newtonsoft.Json库转换自定义类型
如果我在同一个web服务上创建另一个函数,只使用一个字符串参数,它就可以正常工作
这必须是一个类型问题,但我在web服务中标记了以下类型:
[DataContract]
public class ContactParameter
{
[DataMember]
public string Code { get; set; }
[DataMember]
public DateTime ApptDateTo { get; set; }
[DataMember]
public DateTime ApptDateFrom { get; set; }
[DataMember]
public Enums.Enums.ContactType Type { get; set; }
[DataMember]
public string Status { get; set; }
}
public class Enums
{
[DataContract]
public enum ContactType
{
[DataMember]
[EnumMember]
Person= 'P',
[DataMember]
[EnumMember]
Other= 'T'
}
}
问题在于日期时间格式。您应该设置日期时间格式。大概是这样的:
JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};
您可以阅读更多。嗨,谢谢您的帮助。当我添加代码时,它会更进一步。现在调用web方法,但传递的对象为null。你能想到什么明显的原因吗?我传递的json是:{“Code”:“0001”,“ApptDateTo”:“2017-11-22T11:24:17.2216251+00:00”,“ApptDateFrom”:“2017-11-21T11:24:17.2196202+00:00”,“Type”:67,“Status”:“}这完全是另外一回事。它可以是任何东西。我建议结束这个问题,再问另一个问题,并提供服务器端代码。我猜你的代码有问题。是的,我会标记为已回答,因为不再有“错误请求”。我认为这是一个命名问题,就好像我用一个字符串来做一个测试方法,并且在jSon中把参数命名为不同的名称一样,它是空的。如果名称匹配,则传递字符串ok
JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};