示例#1
0
 protected internal void SetFormatter(System.Net.Http.Formatting.MediaTypeFormatter formatter)
 {
     if (formatter != null)
     {
         this.Formatter = formatter;
     }
 }
        public Stream getRDF <T>(T value, string mediaType) where T : class
        {
            System.Net.Http.Formatting.MediaTypeFormatter formatter = theFormatter(value, mediaType);
            MediaTypeHeaderValue thisMediaType = theHeaderValue(mediaType);

            return(Serialize(formatter, value, thisMediaType));
        }
        public T getObjFromRDF <T>(T value, string mediaType, string rdfStr) where T : class
        {
            System.Net.Http.Formatting.MediaTypeFormatter formatter = theFormatter(value, mediaType);
            MediaTypeHeaderValue thisMediaType = theHeaderValue(mediaType);

            return(Deserialize(formatter, value, rdfStr, thisMediaType));
        }
        public string getRDFStr <T>(T value, string mediaType) where T : class
        {
            System.Net.Http.Formatting.MediaTypeFormatter formatter = theFormatter(value, mediaType);
            MediaTypeHeaderValue thisMediaType = theHeaderValue(mediaType);
            Stream tmpStream = Serialize(formatter, value, thisMediaType);

            return(Encoding.UTF8.GetString((tmpStream as MemoryStream).ToArray()));
        }
        public static object Deserialize(this System.Net.Http.Formatting.MediaTypeFormatter formatter, Type type, string value)
        {
            if (value == null)
            {
                return(null);
            }
            var bytes = formatter.SupportedEncodings.First().GetBytes(value.Trim('\0'));
            var ms    = new System.IO.MemoryStream(bytes);
            var task  = formatter.ReadFromStreamAsync(type, ms, null, null);

            return(task.Result);
        }
        ///// <summary>
        ///// 序列化
        ///// </summary>
        ///// <param name="formatter"></param>
        ///// <param name="value"></param>
        ///// <returns></returns>
        //public static string Serialize(this HttpContent httpContent)
        //{
        //    var ms = new System.IO.MemoryStream();
        //    var task = httpContent.WriteToStreamAsync(value.GetType(), value, ms, null, null);
        //    task.Wait();
        //    return formatter.SupportedEncodings.First().GetString(ms.ToArray());
        //}
        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="formatter"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static string Serialize(this System.Net.Http.Formatting.MediaTypeFormatter formatter, object value)
        {
            if (value == null)
            {
                return(string.Empty);
            }
            var ms   = new System.IO.MemoryStream();
            var task = formatter.WriteToStreamAsync(value.GetType(), value, ms, null, null);

            task.Wait();
            return(formatter.SupportedEncodings.First().GetString(ms.ToArray()));
        }
        private T Deserialize <T>(System.Net.Http.Formatting.MediaTypeFormatter formatter,
                                  T value, string str, MediaTypeHeaderValue mediaType) where T : class
        {
            Stream       stream  = new MemoryStream();
            StreamWriter writer  = new StreamWriter(stream);
            HttpContent  content = new StreamContent(stream);

            content.Headers.ContentType = mediaType;
            writer.Write(str);
            writer.Flush();
            stream.Position = 0;
            return(formatter.ReadFromStreamAsync(typeof(T), stream, content, logFormatter).Result as T);
        }
 private System.Net.Http.Formatting.MediaTypeFormatter theFormatter <T>(T value, string mediaType)
 {
     System.Net.Http.Formatting.MediaTypeFormatter formatter = null;
     if (mediaType == OSLC4Net.Core.Model.OslcMediaType.APPLICATION_JSON)
     {
         formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter();
     }
     else if (mediaType == OSLC4Net.Core.Model.OslcMediaType.APPLICATION_RDF_XML)
     {
         ISet <System.Net.Http.Formatting.MediaTypeFormatter> formatters =
             new HashSet <System.Net.Http.Formatting.MediaTypeFormatter>();
         formatters.Add(new RdfXmlMediaTypeFormatter());
         formatter = new System.Net.Http.Formatting.MediaTypeFormatterCollection(formatters).FindWriter(value.GetType(),
                                                                                                        new System.Net.Http.Headers.MediaTypeHeaderValue(mediaType));
     }
     return(formatter);
 }
        private Stream Serialize <T>(System.Net.Http.Formatting.MediaTypeFormatter formatter,
                                     T value, System.Net.Http.Headers.MediaTypeHeaderValue mediaType)
        {
            Stream stream = new MemoryStream();

            try
            {
                HttpContent content = new StreamContent(stream);
                content.Headers.ContentType = mediaType;
                formatter.WriteToStreamAsync(typeof(T), value, stream, content, null).Wait();
                stream.Position = 0;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Serialization error: " + ex.ToString());
            }
            return(stream);
        }
示例#10
0
        static async Task RunAsync()
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:59241");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/bson"));

                #region get
                var result = await client.GetAsync("api/books/1");

                try
                {
                    result.EnsureSuccessStatusCode();
                }
                catch (Exception ex)
                {
                    string s = ex.Message;
                }

                System.Net.Http.Formatting.MediaTypeFormatter[] formatters = new System.Net.Http.Formatting.MediaTypeFormatter[] {
                    new System.Net.Http.Formatting.BsonMediaTypeFormatter()
                };
                var book = await result.Content.ReadAsAsync <Book>(formatters);

                #endregion
                var book2 = new Book {
                    AuthorID = 1,
                    Title    = "tutu",
                };

                System.Net.Http.Formatting.BsonMediaTypeFormatter typeFormatter = new System.Net.Http.Formatting.BsonMediaTypeFormatter();
                var result2 = await client.PostAsync("api/books", book2, typeFormatter);

                result2.EnsureSuccessStatusCode();
            }
        }
示例#11
0
 public Task <HttpResponseMessage> PutAsync <T>(Uri requestUri, T value, System.Net.Http.Formatting.MediaTypeFormatter mediaTypeFormatter, IDictionary <string, string> customerHeaders = null) where T : class
 {
     return(GenerateResponseAsync(requestUri, HttpMethod.Put, value));
 }
示例#12
0
 public static System.Threading.Tasks.Task <System.Net.Http.HttpResponseMessage> PutAsync <T>(this System.Net.Http.HttpClient client, string requestUri, T value, System.Net.Http.Formatting.MediaTypeFormatter formatter, string mediaType, System.Threading.CancellationToken cancellationToken)
 {
     throw null;
 }
示例#13
0
 public static void AddQueryStringMapping(this System.Net.Http.Formatting.MediaTypeFormatter formatter, string queryStringParameterName, string queryStringParameterValue, string mediaType)
 {
 }
示例#14
0
 public static void AddRequestHeaderMapping(this System.Net.Http.Formatting.MediaTypeFormatter formatter, string headerName, string headerValue, System.StringComparison valueComparison, bool isValueSubstring, string mediaType)
 {
 }
示例#15
0
 public static void AddMediaRangeMapping(this System.Net.Http.Formatting.MediaTypeFormatter formatter, string mediaRange, string mediaType)
 {
 }
示例#16
0
 public static void AddMediaRangeMapping(this System.Net.Http.Formatting.MediaTypeFormatter formatter, System.Net.Http.Headers.MediaTypeHeaderValue mediaRange, System.Net.Http.Headers.MediaTypeHeaderValue mediaType)
 {
 }
示例#17
0
 public ContentNegotiationResult(System.Net.Http.Formatting.MediaTypeFormatter formatter, System.Net.Http.Headers.MediaTypeHeaderValue mediaType)
 {
 }
 public static T Deserialize <T>(this System.Net.Http.Formatting.MediaTypeFormatter formatter, string value)
 {
     return((T)Deserialize(formatter, typeof(T), value));
 }
        public IEnumerable <T> DeserializeCollection <T>(
            string strRDF,
            IEnumerable <T> value,
            string contentType,
            string descriptionAbout  = null,
            string responseInfoAbout = null,
            string nextPageAbout     = null) where T : class
        {
            if (String.IsNullOrEmpty(descriptionAbout))
            {
                descriptionAbout = "http://com/undefined/descriptionAbout";
            }

            if (String.IsNullOrEmpty(responseInfoAbout))
            {
                responseInfoAbout = "http://com/undefined/responseInfoAbout";
            }

            if (String.IsNullOrEmpty(responseInfoAbout))
            {
                responseInfoAbout = "http://com/undefined/nextPageAbout";
            }

            Stream       stream  = new MemoryStream();
            StreamWriter writer  = new StreamWriter(stream);
            HttpContent  content = new StreamContent(stream);

            System.Net.Http.Formatting.MediaTypeFormatter formatter = null;

            if (contentType == OslcMediaType.APPLICATION_JSON)
            {
                JsonValue json = OSLC4Net.Core.JsonProvider.JsonHelper.CreateJson(
                    descriptionAbout,
                    responseInfoAbout,
                    nextPageAbout,
                    null,
                    value,
                    null);

                formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter(json, false);
                content.Headers.ContentType = OslcMediaType.APPLICATION_JSON_TYPE;
            }
            else if (contentType == OslcMediaType.APPLICATION_RDF_XML)
            {
                IGraph rdfGraph = DotNetRdfHelper.CreateDotNetRdfGraph(
                    descriptionAbout,
                    responseInfoAbout,
                    nextPageAbout,
                    null,
                    value,
                    null);

                formatter = new RdfXmlMediaTypeFormatter(rdfGraph);
                content.Headers.ContentType = OslcMediaType.APPLICATION_RDF_XML_TYPE;
            }

            if (formatter == null)
            {
                return(null);
            }

            writer.Write(strRDF);
            writer.Flush();

            stream.Position = 0;

            return(formatter.ReadFromStreamAsync(typeof(List <T>), stream, content, null).Result as IEnumerable <T>);
        }
示例#20
0
        protected internal virtual System.Net.Http.Formatting.MediaTypeFormatter GetMediaTypeFormatter(MediaType mediaType, params string[] supportedMediaTypes)
        {
            var rr = getMediaTypeFormatterFunc?.Invoke(mediaType, supportedMediaTypes);

            if (rr != null)
            {
                return(rr);
            }


            //bool setPropertySettingsFromAttributes = true, isContractNHibernateProxy = false;
            System.Net.Http.Formatting.MediaTypeFormatter formatter = null;
            switch (mediaType)
            {
            case MediaType.Json:
                formatter = new System.Net.Http.Formatting.JsonMediaTypeFormatter
                {
                    Indent             = true,
                    SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings
                    {
                        Formatting                 = Newtonsoft.Json.Formatting.Indented,              //是否格式化缩进
                        NullValueHandling          = Newtonsoft.Json.NullValueHandling.Ignore,         //空值忽略
                        DefaultValueHandling       = Newtonsoft.Json.DefaultValueHandling.Include,     //序列化和反序列化时,包含默认值
                        ReferenceLoopHandling      = Newtonsoft.Json.ReferenceLoopHandling.Ignore,     //避免循环引用
                        PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None,  //序列化时保留引用。
                        DateTimeZoneHandling       = Newtonsoft.Json.DateTimeZoneHandling.Utc,         //将所有日期转换成UTC格式
                        DateFormatHandling         = Newtonsoft.Json.DateFormatHandling.IsoDateFormat, //JSON日期格式
                        Converters                 = new Newtonsoft.Json.JsonConverter[] {
                            //new CamelCasePropertyNamesContractResolver(),//驼峰式大小写转换
                            new Newtonsoft.Json.Converters.StringEnumConverter(),    //枚举转换成枚举名称字符串
                            //new Orchard.Utility.Json.LocalDateTimeConverter(),
                            //new Orchard.Utility.Json.InterfaceConverter(),
                            new Utilities.ExpandoObject2.Converters.ExpandoObject2Converter(),
                            new Utilities.ExpandoObject2.Converters.DynamicJsonConverter(),
                            //////new Newtonsoft.Json.Converters.MicrosoftJavaScriptDateTimeConverter(),
                            //new TimestampConverter()
                            //new Orchard.Utility.Json.NHibernateProxyConverter(isContractNHibernateProxy),
                            //new Orchard.Utility.Json.EncodeNHibernateContractResolver(setPropertySettingsFromAttributes, isContractNHibernateProxy)
                        },
                        Error = (currentObject, errorContext) =>
                        {
                        }
                    }
                };
                this.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                break;

            case MediaType.Xml:
                formatter = new System.Net.Http.Formatting.XmlMediaTypeFormatter {
                    Indent = true, UseXmlSerializer = true
                };
                this.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));
                break;

            case MediaType.Bson:
                formatter = new System.Net.Http.Formatting.BsonMediaTypeFormatter {
                };
                break;

            default:
                break;
            }
            foreach (var item in supportedMediaTypes ?? new string[] { })
            {
                try
                {
                    formatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue(item));
                    //formatter.SupportedMediaTypes.Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));
                }
                catch (Exception)
                {
                    //    throw;
                }
            }
            return(formatter);
        }
示例#21
0
 public ObjectContent(System.Type type, object value, System.Net.Http.Formatting.MediaTypeFormatter formatter, string mediaType)
 {
 }