Quantcast
Channel: WCF, ASMX and other Web Services
Viewing all articles
Browse latest Browse all 555

Web service can't receive JSON from headers application/json

$
0
0

Hello,

First of all, I prefer to specify that I've already search but I don't found anything to help with my problem.cry

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,


Viewing all articles
Browse latest Browse all 555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>