C# REST API : xml as post data

标签 c# xml rest

我正在从事一个需要使用 REST API 的项目。 API 需要一个 DTO 作为输入参数。

 [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;
}

经过几个小时的调试,我发现问题是由 DateTime 属性引起的。我开始“手动”创建 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")
  • 开始日期.Ticks

最佳答案

StartdDate.toString("s") 成功了。

关于C# REST API : xml as post data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10280326/

相关文章:

c# - 在 C# 和 SQL Server 2008 R2 中使用 MD5

c# - 为什么二进制序列化比 xml 序列化更快?

c# - 查询反序列化对象

java - 在java中解析来自RESTful服务的XML响应

xml - xsl :for-each loop 内的计数器

c# - 数组到 XML 的 .NET 序列化。如何为数组类型设置别名?

java - Java maven spring 框架的 Restful API 不工作

django - Django REST Framework 中的嵌套 URL 模式

python - Flask路由查询参数

c# - 从项目文件构建一个没有 Microsoft Visual Studio 的可执行文件