Hello,
First of all, I prefer to specify that I've already search but I don't found anything to help with my problem.![]()
I need to create a web service that will receive JSON from TFS Hooks. (I do my test with Fiddler).
in my code I have an User classes :
namespace WebServiceProject
{
public class User
{
public User(string json)
{
JObject jObject = JObject.Parse(json);
JToken jRessource = jObject["resource"];
JToken jRevision = jRessource["revision"];
JToken jFields = jRevision["fields"];
JToken jCreated = jFields["System.CreatedBy"];
JToken jChanged = jFields["System.ChangedBy"];
WorkItemType = (string)jFields["System.WorkItemType"];
State = (string)jFields["System.State"];
CreatedDate = (DateTime)jFields["System.CreatedDate"];
CreatedBy = (string)jCreated["uniqueName"];
ChangedDate = (DateTime)jFields["System.ChangedDate"];
ChangedBy = (string)jChanged["uniqueName"];
Title = (string)jFields["System.Title"];
}
public string WorkItemType { get; set; }
public string State { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public DateTime ChangedDate { get; set; }
public string ChangedBy { get; set; }
public string Title { get; set; }
public string text { get; set; }
public string html { get; set; }
public string markdown { get; set; }
public object displayName { get; set; }
public string oldValue { get; set; }
public string newValue { get; set; }
public string href { get; set; }
}
}and my web service class :
namespace WebServiceProject
{
/// <summary>
/// Description résumée de WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
[System.ComponentModel.ToolboxItem(false)]
// Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante.
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string ReadJson(string json)
{
Console.WriteLine(json.Length);
User user = new User(json);
return "Title : " + user.Title + ", State : " + user.State + ", Type : " + user.WorkItemType + ", Created By : " + user.CreatedBy + ", Created Date : " + user.CreatedDate + ", Changed By : " + user.ChangedBy + ", Changed Date : " + user.ChangedDate + ".";
}
}
}with this code I can receive JSON data from file with "application/x-www-form-urlencoded" headers, but when I change the content type with "application/json" it make me an error like this :
{"Message":"Primitive JSON non valide : json.","StackTrace":" à System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n à System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n à System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n à System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n à System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n à System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n à System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n à System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
I need to change the content type because in my JSON, I have some "&" which stop the reading of my JSON.
Hope you can help me, and thank's to you for your time,