Я работаю над проектом, который требует от меня работы с REST API. API ожидает DTO в качестве входного параметра.C# REST API: xml as post данные
[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 proprties. Я начал «вручную» создавать XML и делать свойство для каждого свойства.
sb.Append("<Startdate>").Append(HttpUtility.HtmlEncode(Startdate.ToString(Helper.DATE_FORMAT_STRING))).Append("</Startdate>");
Я попытался добавить формат (ddMMyyyy) в toString, но он все еще вызывает плохой запрос. Как мне добавить свойство DateTime в XML, чтобы ASP.NET смог разобрать его в DTO?
Материал я пробовал:
- StartDate.ToLongDateString()
- StartDate.ToString()
- StartDate.toString ("ddhhyyyy")
- StartDate.Ticks
@HenkHolterman Он не признает, что Сервис является действительным сервисом. – Reinard
Wrap GetResponse в попытке использовать код в ответе на этот вопрос http://stackoverflow.com/questions/9948367/cant-get-actual-error-in-response-for-rest-request-fiddler-shows- me-more-error/9948511 # 9948511, чтобы получить реальный ответ от сервера и опубликовать его тоже. – JamieSee
@JamieSee Добавлены локальные переменные в. – Reinard