2
我正在处理一个需要我使用REST API的项目。 API期望DTO作为输入参数。C#REST API:xml作为发布数据
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "campaign/create?session={sessionkey}", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml)]
[XmlSerializerFormat(Style = OperationFormatStyle.Document, Use = OperationFormatUse.Literal)]
FeedbackDTO PersistCampaign(string sessionkey, CampaignDTO PaycentoCampaign);
我试图将数据发送到该方法具有以下方法:
public static HttpWebResponse DoHttpWebRequest(String url, String method, string data)
{
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
req.KeepAlive = false;
req.ContentType = "application/xml";
req.Method = method;
if ((method.Equals("POST") || method.Equals("PUT")) && data != null)
{
byte[] buffer = Encoding.UTF8.GetBytes(data);
Stream PostData = req.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
}
return req.GetResponse() as HttpWebResponse;
}
后调试的时间,我发现这个问题是由企业的性质日期时间引起。我开始'手动'创建XML并为每个属性做属性。
sb.Append("<Startdate>").Append(HttpUtility.HtmlEncode(Startdate.ToString(Helper.DATE_FORMAT_STRING))).Append("</Startdate>");
我尝试在toString中添加一个格式(ddMMyyyy),但它仍然导致错误的请求。我应该如何将一个DateTime属性添加到XML中,以便ASP.NET能够将它解析到DTO中?
东西我尝试:
- StartDate.ToLongDateString()
- StartDate.ToString()
- StartDate.toString( “ddhhyyyy”)
- StartDate.Ticks
@HenkHolterman它不承认服务是有效的服务。 – Reinard 2012-04-23 12:57:50
将GetResponse包装在一个尝试中,并在此问题的答案中使用代码http://stackoverflow.com/questions/9948367/cant-get-actual-error-in-response-for-rest-request-fiddler-shows-我更多的错误/ 9948511#9948511从服务器获得实际的响应,并张贴了。 – JamieSee 2012-04-23 16:20:19
@JamieSee添加了一个局部变量。 – Reinard 2012-04-24 07:18:40