webapi设置json文件大小_webapi上传json文件 - CSDN
精华内容
参与话题
  • webapi返回json格式优化

    2019-08-01 20:37:36
    一、设置webapi返回json格式  在App_Start下的WebApiConfig的注册函数Register中添加下面这代码 config.Formatters.Remove(config.Formatters.XmlFormatter); 二、设置返回Json键值统一为小写 新建一...

    一、设置webapi返回json格式

      在App_Start下的WebApiConfig的注册函数Register中添加下面这代码

    config.Formatters.Remove(config.Formatters.XmlFormatter);
    

     

    二、设置返回Json键值统一为小写

       新建一个类并继承自DefaultContractResolver,重写ResolvePropertyName方法,

       

     public class UnderlineSplitContractResolver : DefaultContractResolver
     {
         protected override string ResolvePropertyName(string propertyName)
         {
             //return CamelCaseToUnderlineSplit(propertyName);
             return propertyName.ToLower();
         }
     }

    在WebApiConfig.Register方法中添加配置代码

    // 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new UnderlineSplitContractResolver();

    三、在返回的JSON格式中出现两个很不开心的问题

    看图:

    第一个问题是为null的字符串,这里也返回了null,感觉返回""感觉好一点

    第二个问题,lastupdate是时间格式,这种格式化看着有点不爽,如果是"2016-03-25 17:19:17"感觉就好点了

    解决如下:

    在解决第二个问题时我们新建的类UnderlineSplitContractResolver里面重写CreateProperties方法:

     //解决API NULL 和时间格式问题
     protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
     {
         return type.GetProperties
    .Select(p
    => { var jp = base.CreateProperty(p, memberSerialization); if (jp.PropertyType == typeof(System.String)) jp.ValueProvider = new NullToEmptyStringValueProvider(p); if (jp.PropertyType.ToString().Contains("System.DateTime")) jp.Converter = new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }; return jp; }).ToList(); }
    NullToEmptyStringValueProvider类继承IValueProvider,代码如下:
        /// <summary>
        /// 解决返回json数据null问题
        /// </summary>
        public class NullToEmptyStringValueProvider : IValueProvider
        {
            PropertyInfo _MemberInfo;
            public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
            {
                _MemberInfo = memberInfo;
            }
            public object GetValue(object target)
            {
                object result = _MemberInfo.GetValue(target);
                //if (result == null) 
                //    result = "";
                if (_MemberInfo.PropertyType == typeof(string) && result == null)
                    result = "";
                return result;
            }
            public void SetValue(object target, object value)
            {
                _MemberInfo.SetValue(target, value);
            }
        }

    此时问题已经解决,返回的json如下:

    看起来是不是舒服多了?

    也可以用如下代码,忽略null值

    config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;

     

    四、整理一下代码

     新建一个文件InitAPI.cs,代码如下:

      public class InitAPI
        {
            public static void Init(HttpConfiguration config)
            {
                //HttpConfiguration config = GlobalConfiguration.Configuration;
                config.Formatters.Remove(config.Formatters.XmlFormatter);
    
    
                // 解决json序列化时的循环引用问题
                config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
                // 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
                //config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new  CamelCasePropertyNamesContractResolver();
                // 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
                config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new UnderlineSplitContractResolver();
            }
        }
    
        public class UnderlineSplitContractResolver : DefaultContractResolver
        {
    
    
            protected override string ResolvePropertyName(string propertyName)
            {
                //return CamelCaseToUnderlineSplit(propertyName);
                return propertyName.ToLower();
            }
            private string CamelCaseToUnderlineSplit(string name)
            {
                return name.ToLower();
            }
    
    
    
            //解决API NULL 和时间格式问题
            protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
            {
                return type.GetProperties()
                       .Select(p =>
                       {
                           var jp = base.CreateProperty(p, memberSerialization);
                           if (jp.PropertyType == typeof(System.String))
                               jp.ValueProvider = new NullToEmptyStringValueProvider(p);
                           if (jp.PropertyType.ToString().Contains("System.DateTime"))
                               jp.Converter = new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
                           return jp;
                       }).ToList();
            }
    
    
    
        }
        /// <summary>
        /// 解决返回json数据null问题
        /// </summary>
        public class NullToEmptyStringValueProvider : IValueProvider
        {
            PropertyInfo _MemberInfo;
            public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
            {
                _MemberInfo = memberInfo;
            }
            public object GetValue(object target)
            {
                object result = _MemberInfo.GetValue(target);
                //if (result == null) 
                //    result = "";
                if (_MemberInfo.PropertyType == typeof(string) && result == null)
                    result = "";
                return result;
            }
            public void SetValue(object target, object value)
            {
                _MemberInfo.SetValue(target, value);
            }
        }
    在WebApiConfig中直接调用InitAPI.Init(config),代码如下:
     public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                // Web API 配置和服务
    
                // Web API 路由
                config.MapHttpAttributeRoutes();
    
                config.Routes.MapHttpRoute(
                   name: "DefaultApi",
                   routeTemplate: "api/{controller}/{id}",
                   defaults: new { id = RouteParameter.Optional }
               );
    
                InitAPI.Init(config);
            }
        }

     

    结束

     

     

    转载于:https://www.cnblogs.com/GarsonZhang/p/5322747.html

    展开全文
  • webapi请求参数长度过大解决方法

    千次阅读 2018-02-11 14:57:07
    【.net framework】【.net core】 ///配置文件大小限制 services.Configure&lt;FormOptions&gt;(options =&gt; { options.MultipartBodyLengthLimit = 60000000; ...

    【.net framework】


    【.net core】

                ///配置文件大小限制
                services.Configure<FormOptions>(options =>
                {
                    options.MultipartBodyLengthLimit = 60000000;
                });
            [HttpPost]
            [DisableRequestSizeLimit]
            public void uploadFile([FromBody] string base64)
            {
            }


    展开全文
  • 搭建json格式的webservice服务器

    万次阅读 2016-04-29 10:20:07
    文件记录了搭建json格式的webservice服务器的最简单步骤,为平时开发项目步骤记录,如有问题,请多多指出。

    搭建json格式的webservice服务器

    本文为平时开发项目步骤记录,以备以后需要
    

    一、所用技术
    语言:java
    框架:spring mvc 3.1
    二、所用技术
    IDE:MyEclipse
    web容器: Apache tomcat 6.0
    三、所有详细步骤
    1. 前期准备工作,比如安装MyEclipse,安装tomcat这些网上有非常多的教程就不再赘述了。
    2. 打开MyEclipse,创建动态网站项目。
    创建项目
    输入项目名,选择在MyEclipse中配置好的tomcat6.0,如何在MyEclipse中配置tomcat网上也有很多教程。点击完成创建。
    这里写图片描述
    3. 在WEB-INF的lib文件夹下,导入所需jar包,所需jar包的百度盘地址 http://pan.baidu.com/s/1dDOU9TR
    4. 在web.xml插件中添加一下代码,用于加载spring mvc和字符解析:


    <servlet>
            <servlet-name>ModelServer</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>ModelServer</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    在web.xml文件的同级目录创建SimpleService-servlet.xml文件,在这里配置spring mvc的相关配置。一下给出的模板是用于自动request body转化为java class 和 上传文件的相关配置,其他只需再添加用户所需的依赖注入即可。


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd 
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
        <mvc:annotation-driven /> 
         <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <property name="messageConverters">
                <list>
                    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                        <property name="supportedMediaTypes">
                            <list>
                                <value>
                                    text/html;charset=UTF-8
                                </value>
                            </list>
                        </property>
                    </bean>
                    <!-- 启动JSON格式的配置 -->
                    <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                        <!-- 解决 HttpMediaTypeNotAcceptableException: Could not find acceptable representation -->
                        <property name="supportedMediaTypes">
                            <list>
                                <value>application/json;charset=UTF-8</value>
                            </list>
                        </property>
                    </bean>
                </list>
            </property>
        </bean>
        <!--上传文件的配置 -->
        <bean id="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8" />
            <!-- 指定所上传文件的总大小不能超过2000KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
            <property name="maxUploadSize" value="20480000" />
            <!-- 设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240 -->
            <!-- 但是经实验,上传文件大小若小于此参数,则不会生成临时文件,很尴尬,故改为256-->
            <property name="maxInMemorySize" value="256" />  
    
        </bean>
        </beans>

    至此整个框架已经搭建完毕,只需根据需求完成自己的代码即可。比如,想写一个接口,功能是别人发送GET请求,返回“hello world!”。

    在src文件夹下创建Class(com.peter.Hello.java)


    创建class


    package com.peter;
    
    import java.io.IOException;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping(value = "/hello")   //此处value是rest api的前缀
    public class Hello {
        @RequestMapping(value = "/sayHello",method = RequestMethod.GET)//此处value是rest api的具体定位,method是接受的请求的类型
        public void sayHello(HttpServletResponse response){
            try {
                response.getWriter().write("{\"result\":\"hello world!\"}");
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    }

    然后将项目部署到已经搭建好的tomcat中,然后启动tomcat,然后使用rest请求发送这里写图片描述即可看到返回{result:hello world!}

    至此整个简单项目已经搭建完毕,具体rest请求还有很多相关的东西,网上也有很多学习资料就不再赘述了。随手记录,如有问题,请博内留言以帮助我改正和完善,一起努力,一起学习,一起进步!


    Mr peter king 2016 04 29

    展开全文
  • 通过.NET客户端调用Web API(C#)

    万次阅读 2020-05-29 14:59:37
    3.2 Calling a Web API From a .NET Client (C#) 3.2 通过.NET客户端调用Web API(C#) 本文引自:http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client By Mike Wasson | ...

    3.2 通过.NET客户端调用Web API(C#)

     

    Create the Console Application
    创建控制台应用程序

    启动Visual studio,并从“开始”页面选择“新项目”。或者从“文件”菜单选择“新建”,然后选择“项目”。
    在“模板”面板中,选择“已安装模板”,并展开“Visual C#”节点。在“Visual C#”下选择“Windows”。在项目模板列表中选择“控制台应用程序”。命名此项目并点击“OK”(见图3-1)。

    WebAPI3-1

    图3-1. 创建控制台项目

    安装NuGet包管理器

    “NuGet包管理器(NuGet Package Manager)”是把Web API客户端库添加到项目的一种最容易的方法。如果尚未安装NuGet包管理器,按如下步骤安装。

    1. 启动Visual Studio.
    2. 从“工具”菜单选择“扩展与更新”
    3. 在“扩展与更新”对话框中,选择“在线”
    4. 如果未看到“NuGet包管理器”,在搜索框中输入“nuget package manager”。
    5. 选择“NuGet包管理器”,并点击“下载”。
    6. 下载完成后,会提示你安装。
    7. 安装完成后,可能会提示重启Visual Studio。

    上述安装过程如图3-2所示。

    WebAPI3-2

    图3-2. 安装NuGet包管理器


    安装Web API客户端库

    .
    安装NuGet包管理器后,把Web API客户端库包添加到你的项目。步骤如下:

    1. 从“工具”菜单选择“库包管理器”。注:如果看不到这个菜单项,请确保已正确安装了NuGet包管理器。
    2. 选择“管理解决方案的NuGet包…”
    3. 在“管理NuGet包”对话框中,选择“在线”。
    4. 在搜索框中输入“Microsoft.AspNet.WebApi.Client”。
    5. 选择“ASP.NET Web API自托管包”,并点击“安装”。
    6. 这个包安装后,点击“关闭”,关闭此对话框。

    上述安装步骤如图3-3所示。

    WebAPI3-3

    图3-3. 安装Web API客户端库


    添加模型类

    将以下类添加到应用程序:

    class Product 
    { 
        public string Name { get; set; } 
        public double Price { get; set; } 
        public string Category { get; set; } 
    }

    这个类创建一个数据对象,HttpClient将把它写入HTTP请求体中,也从HTTP响应体中读取它。

    Initialize HttpClient
    初始化HttpClient

    创建一个新的HttpClient实例,并像下面这样初始化它:

    namespace ProductStoreClient 
    { 
        using System; 
        using System.Collections.Generic; 
        using System.Net.Http; 
        using System.Net.Http.Headers; 
    
        class Program 
        { 
            static void Main(string[] args) 
            { 
                HttpClient client = new HttpClient(); 
                client.BaseAddress = new Uri("http://localhost:9000/"); 
                // Add an Accept header for JSON format.
                // 为JSON格式添加一个Accept报头
                client.DefaultRequestHeaders.Accept.Add( 
                    new MediaTypeWithQualityHeaderValue("application/json")); 
            } 
        } 
    }

    这段代码把基URI设置为“http://localhost:9000/”,并将Accept报头设置为“application/json”,这是告诉服务器,以JSON格式发送数据。

    获取资源(HTTP GET)

    以下代码展示如何对产品列表查询API:

    // List all products.
    // 列出所有产品
    HttpResponseMessage response = client.GetAsync("api/products").Result;  // Blocking call(阻塞调用)! 
    if (response.IsSuccessStatusCode) 
    { 
        // Parse the response body. Blocking!
        // 解析响应体。阻塞!
        var products = response.Content.ReadAsAsync<IEnumerable<Product>>().Result; 
        foreach (var p in products) 
        { 
            Console.WriteLine("{0}\t{1};\t{2}", p.Name, p.Price, p.Category); 
        } 
    } 
    else 
    { 
        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); 
    }

    GetAsync方法发送HTTP GET请求。正如其名称所暗示的,GetAsync是异步的。它立即返回,不会等待服务器的响应。返回值是一个表示异步操作的Task对象。当该操作完成时,Task.Result属性包含HTTP响应。

    重要的是理解,直到请求完成(或超时),采用Result属性的过程是应用程序线程阻塞的。控制台应用程序的阻塞没问题,但是,你决不应该在一个Windows应用程序的UI上做这种事,因为这会阻塞UI去响应用户的输入。在本教程的下一部分中,我们将看到如何编写非阻塞调用。


    如果HTTP响应指示成功,响应体便含有一个JSON格式的产品列表。要解析这个列表,需调用ReadAsAsync。该方法读取响应体,并试图把它解序列化成一个具体的CLR(公共语言运行时)类型。这个方法也是异步的,因为体可能有任意大小。再次强调,采用Result属性的过程是线程阻塞的。

    HTTP会话示例:

    GET http://localhost:9000/api/products HTTP/1.1 
    Accept: application/json 
    Host: localhost:9000 
    Connection: Keep-Alive 
    
    HTTP/1.1 200 OK 
    Server: ASP.NET Development Server/11.0.0.0 
    Date: Mon, 20 Aug 2012 22:14:59 GMT 
    X-AspNet-Version: 4.0.30319 
    Cache-Control: no-cache 
    Pragma: no-cache 
    Expires: -1 
    Content-Type: application/json; charset=utf-8 
    Content-Length: 183 
    Connection: Close 
    
    [{"Id":1,"Name":"Tomato soup","Category":"Groceries","Price":1.39},{"Id":2,"Name":"Yo-yo", 
    "Category":"Toys","Price":3.75},{"Id":3,"Name":"Hammer","Category":"Hardware","Price":16.99}]

    通过ID获取产品是类似的:

    // Get a product by ID
    // 通过ID获取产品
    response = client.GetAsync("api/products/1").Result; 
    if (response.IsSuccessStatusCode) 
    { 
        // Parse the response body. Blocking!
        // 解析响应休。阻塞!
        var product = response.Content.ReadAsAsync<Product>().Result; 
        Console.WriteLine("{0}\t{1};\t{2}", product.Name, product.Price, product.Category); 
    } 
    else 
    { 
        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); 
    }

    媒体类型格式化器

    ReadAsAsync是在System.Net.Http.HttpContentExtensions类中定义的一个扩展方法。不带参数,它会使用媒体类型格式化器的默认设置,以试图解析响应体。默认格式化器支持JSON、XML和经过url编码的表单数据(Form-url-encoded data)。(关于媒体类型格式化器的更多信息,参阅“格式化与模型绑定(本教程系列的第6章 — 译者注)”)

    也可以明确指定所使用的媒体类型格式化器。如果你有一个自定义媒体类型格式化器,这是有用的。

    var formatters = new List<MediaTypeFormatter>() { 
        new MyCustomFormatter(), 
        new JsonMediaTypeFormatter(), 
        new XmlMediaTypeFormatter() 
    }; 
    
    resp.Content.ReadAsAsync<IEnumerable<Product>>(formatters);

    创建一个资源(HTTP POST)

    以下代码发送一个POST请求,它含有一个JSON格式的Product实例:

    // Create a new product
    // 创建一个新产品
    var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" }; 
    Uri gizmoUri = null; 
    
    response = client.PostAsJsonAsync("api/products", gizmo).Result; 
    if (response.IsSuccessStatusCode) 
    { 
        gizmoUri = response.Headers.Location; 
    } 
    else 
    { 
        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); 
    }

    PostAsJsonAsync是在System.Net.Http.HttpClientExtensions中定义的一个扩展方法。上述代码与以下代码等效:

    var product = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" }; 
    
    // Create the JSON formatter.
    // 创建JSON格式化器。
    MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); 
    
    // Use the JSON formatter to create the content of the request body.
    // 使用JSON格式化器创建请求体内容。
    HttpContent content = new ObjectContent<Product>(product, jsonFormatter); 
    
    // Send the request.
    // 发送请求。
    var resp = client.PostAsync("api/products", content).Result;

    对于XML格式,使用PostAsXmlAsync方法。

    HTTP会话示例:

    POST http://localhost:9000/api/products HTTP/1.1 
    Accept: application/json 
    Content-Type: application/json; charset=utf-8 
    Host: localhost:9000 
    Content-Length: 50 
    Expect: 100-continue 
    
    {"Name":"Gizmo","Price":100.0,"Category":"Widget"} 
    
    HTTP/1.1 201 Created 
    Server: ASP.NET Development Server/11.0.0.0 
    Date: Mon, 20 Aug 2012 22:15:00 GMT 
    X-AspNet-Version: 4.0.30319 
    Location: http://localhost:9000/api/products/7 
    Cache-Control: no-cache 
    Pragma: no-cache 
    Expires: -1 
    Content-Type: application/json; charset=utf-8 
    Content-Length: 57 
    Connection: Close 
    
    {"Id":7,"Name":"Gizmo","Category":"Widget","Price":100.0}

    默认地,JSON格式化器将content-type(内容类型)设置为“application/json”。你也可以明确地指定媒体类型。例如,假设“application/vnd.example.product”是你用于Product实例的媒体类型。可以像下面这样来设置这种媒体:

    HttpContent content = new ObjectContent<Product>(product, jsonFormatter,
        "application/vnd.example.product+json");

    更新一个资源(HTTP PUT)

    以下代码发送一个PUT请求:

    // Update a product
    // 更新一个产品
    gizmo.Price = 99.9; 
    response = client.PutAsJsonAsync(gizmoUri.PathAndQuery, gizmo).Result; 
    Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);

    PutAsJsonAsync方法与PostAsJsonAsync类似,只是它发送的是一个PUT请求,而不是POST。

    删除一个资源(HTTP DELETE)

    现在,你可能已经能预测到如何发送一个DELETE请求了:

    // Delete a product 
    // 删除一个产品
    response = client.DeleteAsync(gizmoUri).Result; 
    Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);

    与GET一样,DELETE请求没有请求体,因此你不必指定JSON或XML格式。

    错误处理

    HttpClient在它接收到一个带有错误代码的HTTP响应时,不会抛出异常。但是,该响应的StatusCode属性含有状态码。而且,如果其状态是一个成功的状态码(状态码在200-299之间)时,IsSuccessStatusCode属性为true。

    使用这种模式的前面这个例子为:

    HttpResponseMessage response = client.GetAsync("api/products").Result; 
    if (response.IsSuccessStatusCode) 
    { 
         // .... 
    }

    如果你喜欢把错误代码处理成异常,可以调用EnsureSuccessStatusCode方法。这个方法在响应状态不是一个成功的代码时,会抛出一个异常。

    try 
    { 
        var resp = client.GetAsync("api/products").Result; 
        resp.EnsureSuccessStatusCode();    // Throw if not a success code. 
    
        // ... 
    } 
    catch (HttpRequestException e) 
    { 
        Console.WriteLine(e.Message); 
    }

    当然,由于其它原因,HttpClient也可能抛出异常 — 例如,请求超时的时候。

    配置HttpClient

    为了配置HttpClient,可以创建一个WebRequestHandler实例,设置其属性,并把它传递给HttpClient构造器:

    WebRequestHandler handler = new WebRequestHandler() 
    { 
        AllowAutoRedirect = false, 
        UseProxy = false 
    }; 
    HttpClient client = new HttpClient(handler);

    WebRequestHandler派生于HttpMessageHandler。通过从HttpMessageHandler派生,你也可以插入自定义消息处理程序。更多信息参阅“HTTP消息处理器(本系列教程的第5.1小节 — 译者注)”。

    其它资源


    控制台应用程序使我们很容易看到代码流程。然而,阻塞调用对于图形UI的应用程序并不是一种好的做法。要了解如何处理非阻塞HttpClient中的异步操作,参阅“通过WPF应用程序调用Web API”(本系列教程的第3.3小节 — 译者注)。

     

    展开全文
  • HTTP POST请求json数据量过大的问题

    万次阅读 2019-07-09 13:49:16
    与第三方合作,需要提供数据上传接口给他们,联调时被他们的单条json数据量困扰到了... 第三方接口联调 一条7M的json上传给我们,毫无意外的报错了:实体数据量太大。该如何修改以便适应大数据量的上传呢?在...
  • java中几种JSON库的解析速度对比

    万次阅读 2016-04-19 18:46:37
    java中哪个JSON库的解析速度是最快的? JSON已经成为当前服务器与WEB应用之间数据...因此,我们运行了一个基准测试来对常用的几个JSON库进行了测 试,看看在解析不同大小文件时哪个库的速度是最快的。下面我会把结
  • IIS默认最大的URL长度...解决方法一:在IIS里面,打开我们站点——请求筛选——URL— — 编辑功能设置——最大URL长度(字节)——修改我们需要的大小(IIS最大为2G) 解决方法二:在web.config中的加入 [html] view
  • Java中哪个JSON库的解析速度是最快的? JSON已经成为当前服务器与WEB应用之间数据...因此,我们运行了一个基准测试来对常用的几个JSON库进行了测 试,看看在解析不同大小文件时哪个库的速度是最快的。下面我会把结
  • chrome扩展:manifest.json文件详解

    万次阅读 2018-07-07 16:38:49
    manifest.json是扩展的配置文件,指明了扩展的各种信息。一个manifest.json格式如下:{ // 必须的字段3个 "name": "MyExtension", // 扩展名称 "version": "1.0", // ...
  • webApi文档好帮手-apidoc使用教程

    万次阅读 2014-12-16 19:28:03
    在开发后台接口的过程中,我们肯定要提供一份api接口文档给终端app。 目前大多数的app的接口请求应该都是http+json的方式。 但是一直苦于做不出份漂亮的api文档,用word写,也太丑了。。怎么才能做出一份像腾讯、...
  • HTML5本地存储使用详解

    千次阅读 2018-08-04 19:17:08
    前言 随着Web应用的发展,需要在用户本地浏览器上存储更多的应用数据,传统的cookie存储的方案...如果是存储复杂的数据,则可以借助Web SQL Database API来实现,可以使用SQL语句完成复杂数据的存储与查询。本...
  • .Net Core 发送请求大小限制设置

    千次阅读 2019-04-27 09:35:43
    问题描述:.Net Core 项目发布后,在form 表单提交保存数据时,提示 请求的长度超过最大限制 代码修改 ... //配置文件大小限制 services.Configure<FormOptions>(options => { options.Va...
  • 问题:页面展示调用查询方法...因为数据中有图片转成的二进制数组,数据比较长,由此怀疑是返回数据大小的问题,经过排查发现查询全部时返回的json数据不全,被截断了,因此页面无法解析。(这个问题真的很坑,排查...
  • HTML5实现本地JSON文件的读写

    千次阅读 2019-07-09 22:03:28
    参考: 使用HTML5来实现本地文件读取和写入 (FileReader读取json...FileReader WebAPI接口 FileSaver.js下载地址 FileSaver.js介绍 JS创建、写入、读取本地文件(txt) (ActiveXObject 这玩意根本不能用,IE...
  • Java Web3J概述

    万次阅读 2019-04-14 00:06:25
    1 Java Web3J概述 Web3j是一个轻量级,Reactive(响应式),类型安全的Java库,用于与Ethereum网络上的客户端(节点)集成,这允许您使用Ethereum块链,而不需要为平台编写自己的集成代码的额外开销。 1.1 Web3J的...
  • package com.maizuo.web.controller; import com.maizuo.domain.Result; import com.maizuo.util.ConstantsConfig; import com.maizuo.util.Upload; import hyxlog.Log; import net.sf.json.JSONObject; import org
  • 想要实现的功能:Post附件到WebApi,WebApi文件转发到 ftp服务器。 主要功能已经实现,有一个问题:需要在WebApi服务器,接收流写入WebApi本地文件,然后读取文件流写入 ftp 服务器,然后再删除WebApi 服务器上的...
  • json从立地到成佛

    万次阅读 多人点赞 2020-07-23 12:06:20
    json它不是一个原有单词,其实是4个单词JavaScript Object Notation(JavaScript对象表示)的简写,**是一种轻量级的文本数据交换格式**,并且json独立于语言(使用JavaScript语法描述对象),很多编程语言都支持json...
  • Jackson API 详细汇总 与 使用介绍

    万次阅读 2020-07-18 21:58:07
    Json 字符串转 Json 对象 复合操作 日期序列化 jackson 概述 1、市面上用于在 Java 中解析 Json 的第三方库,随便一搜不下几十种,其中的佼佼者有Google 的 Gson,Alibaba 的 Fastjson以及本文的...
  • H5本地存储有两个API,一个是Web Storage,还有一个是Web SQL。不管是哪一个,都是基于JavaScript语言来使用,接下来我就教你怎么使用H5本地存储,本文篇幅较大,JS代码较多,请耐心阅读。 一、Web Storage...
1 2 3 4 5 ... 20
收藏数 37,114
精华内容 14,845
关键字:

webapi设置json文件大小