zoukankan      html  css  js  c++  java
  • 使用HttpClient调用WebAPI接口,含WebAPI端示例

    API端:

    using log4net;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Reflection;
    using System.Threading.Tasks;
    using System.Web;
    using System.Web.Http;
    
    namespace WebApi.Controllers
    {
        public class DefaultController : ApiController
        {
            private ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
            IList<menu> List = new List<menu>();
    
    
            public DefaultController()
            {
                for (int i = 1; i <= 2; i++)
                {
                    List.Add(new menu { menuId = i, menuName = "Menu" + i });
                }
            }
    
    
            // GET: api/Default
            public IEnumerable<menu> Get()
            {
                return List;
            }
    
            // GET: api/Default/5
            public menu Get(int id)
            {
                try
                {
                    return List.FirstOrDefault(m => m.menuId == id);
                }
                catch(Exception e)
                {
                    return new menu();
                }
            }
    
            // POST: api/Default
            //public void Post(int id,[FromBody]menu menu)
            //{
            //    log.Info(menu.menuName);
            //}
    
            // PUT: api/Default/5
            public void Put(int id, string guid, [FromBody]string value)
            {
                log.InfoFormat("PUT  id:{0},value:{1},guid:{2}", id, value, guid);
            }
    
            // DELETE: api/Default/5
            public void Delete(int id)
            {
                log.Info(id);
            }
    
            public IHttpActionResult UploadFile()
            {
                //log.Info(id);
                log.Info(HttpContext.Current.Request.Form["qq"]);
                var file = HttpContext.Current.Request.Files[0];
                file.SaveAs(HttpContext.Current.Server.MapPath("/test.jpg"));
                return Ok<string>("test");
            }
        }
    
        public class menu
        {
            public int menuId { get; set; }
            public string menuName { get; set; }
        }
    }

    调用端:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Net.Http;
    using System.Text;
    using System.Net.Http.Headers;
    using System.IO;
    using Newtonsoft.Json;
    
    namespace WebApi.Controllers
    {
        public class ClientController : Controller
        {
            // GET: Client
            public ActionResult Index()
            {
               
                //HttpClient client = new HttpClient();
                //string Url = "http://localhost:33495/api/default/";
    
                #region 原始方式调用
                //StringContent方式调用
                //var result = client.PostAsync(Url, new StringContent("111", Encoding.UTF8, "application/json")).Result;
    
                //ByteArrayContent方式
                //var data = Encoding.UTF8.GetBytes(""ddd"");
                //data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new menu { menuId = 1, menuName = "33333" }));
                //data = Encoding.UTF8.GetBytes("{menuId:1,menuName:333}");
                //var content = new ByteArrayContent(data);
                //content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
                //var result_byte = client.PostAsync(Url, content).Result;
    
                //PostAsJsonAsync方式
                //client.PostAsJsonAsync(Url, "ss");
                #endregion
    
                #region 多参数传参
                //client.PutAsJsonAsync(string.Format("{0}{1}?guid={2}", Url, 5, Guid.NewGuid()), "test");
                #endregion
    
                #region 服务端上传图片
                //服务端上传图片
                //using (HttpClient client = new HttpClient())
                //{
                //    var content = new MultipartFormDataContent();
                //    //添加字符串参数,参数名为qq
                //    content.Add(new StringContent("123456"), "qq");
    
                //    string path = Server.MapPath("/Images/test.jpg");
                //    //添加文件参数,参数名为files,文件名为123.png
                //    content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(path)), "file", "test.jpg");
    
                //    var requestUri = "http://localhost:33495/api/default/";
                //    var result = client.PostAsync(requestUri, content).Result.Content.ReadAsStringAsync().Result;
    
                //    Response.Write(result);
                //}
                #endregion
    
                return null;
            }
    
            public ActionResult HTML()
            {
                return View();
            }
    
            public ActionResult Upload()
            {
                return View();
            }
        }
    }

    HTML(AJAX上传)

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>webapi上传图片</title>
        <script src="~/Scripts/jquery-1.10.2.js"></script>
    </head>
    <body>
        <h2>webapi create</h2>
        <div>
            <form name="form1" method="post" enctype="multipart/form-data">
                <div>
                    <label for="image1">Image</label>
                    <input type="text" name="test" id="test" />
                </div>
                <div>
                    <label for="image1">Image</label>
                    <input type="file" name="photo" id="photo" />
                </div>
                <div>
                    <input type="button" value="ajax upload" id="btnUpload" />
                </div>
                <div>
                    <img id="phptoPic" width="200" />
                </div>
            </form>
        </div>
        <script type="text/javascript">
            $(function () {
                $("#btnUpload").click(function () {
                    var formData = new FormData();
                    formData.append("photo", $("#photo")[0].files[0]);
                    $.ajax({
                        url: '/api/default/UploadFile',
                        type: 'post',
                        data: formData,
                        contentType: false,
                        processData: false,
                        success: function (res) {
                            //console.log(res);
                            if (res == "test") {
                                $("#phptoPic").attr("src", res.url)
                            } else {
                                alert(res.message)
                            }
                        }
                    })
                })
            })
        </script>
    </body>
    </html>

    微软官网示例:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Product App</title>
    </head>
    <body>
    
        <div>
            <h2>All Products</h2>
            <ul id="products" />
        </div>
        <div>
            <h2>Search by ID</h2>
            <input type="text" id="prodId" size="5" />
            <input type="button" value="Search" onclick="find();" />
            <p id="product" />
        </div>
    
    
        <script src="~/Scripts/jquery-1.10.2.js"></script>
        <script>
        var uri = '/api/Default';
    
        $(document).ready(function () {
          // Send an AJAX request
          $.getJSON(uri)
              .done(function (data) {
                // On success, 'data' contains a list of products.
                $.each(data, function (key, item) {
                  // Add a list item for the product.
                  $('<li>', { text: formatItem(item) }).appendTo($('#products'));
                });
              });
        });
    
        function formatItem(item) {
          return item.menuId + item.menuName;
        }
    
        function find() {
          var id = $('#prodId').val();
          $.getJSON(uri + '/' + id)
              .done(function (data) {
                $('#product').text(formatItem(data));
              })
              .fail(function (jqXHR, textStatus, err) {
                $('#product').text('Error: ' + err);
              });
        }
        </script>
    </body>
    </html>
  • 相关阅读:
    阿里测试工程师教你自动化测试如何准备测试数据
    同一个tomcat下部署多个springboot项目时,springboot项目无法正常启动的问题
    ant desgin pro 跨页面传参
    富兰克林的人生信条
    node 一拉管理工具 yarn安装(npm的替代品)
    python pip 安装包下载过慢的解决方法 socket.timeout: The read operation timed out
    springBoot 文件下载
    Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
    MYSQL like 模糊查询 分字查询
    人人译视界-给视频添加srt字幕
  • 原文地址:https://www.cnblogs.com/superfeeling/p/11557661.html
Copyright © 2011-2022 走看看