2012-04-23 58 views
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
+0

@HenkHolterman它不承认服务是有效的服务。 – Reinard 2012-04-23 12:57:50

+0

将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

+0

@JamieSee添加了一个局部变量。 – Reinard 2012-04-24 07:18:40

回答

1

StartdDate.toString(“s”)诀窍。