WebApi 重定向 Redirect 注意重定向的方法 method 要使用GET,其他的試過都報錯 Http 405


有時候在api執行完一個方法后,我們還得再跳到另外一個方法執行其他操作。

這種情況下,我們可以調用方法,也可以根據情況進行重定向作業

private void button2_Click(object sender, EventArgs e)
        {
            HttpWebRequest request=(HttpWebRequest) WebRequest.Create("http://localhost:20137/api/Demo?Name=張三&Gender=M&age=22");
            request.Method = "GET";

            
            //通過URL傳值的話,可以不指定 contentType
            //request.ContentType = "text/html;charset=utf-8";
            //request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {


                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    string result = reader.ReadToEnd();
                    this.textBox1.Text = result;
                }

              
            }
        }

  

第一種 Redirect

 public IHttpActionResult Get([FromUri]Person person)
        {
            return Redirect("http://localhost:20137/api/Demo/TestRedirect?name=張三");// 這種可以,不過action返回類型是IHttpActionResult

            //return Content<Person>(HttpStatusCode.BadRequest,person);
        }
        [HttpGet]
        [Route("api/Demo/TestRedirect")]
        public IHttpActionResult TestRedirect([FromUri]string name)
        {
            return Json("成功跳轉"+ name);
        }

推薦

[Route("action1")]
        [HttpGet]
        public IHttpActionResult Action1()
        {
            Console.WriteLine("Action1");
            return new RedirectResult(new Uri("http://localhost:3721/api/demo/action2"), this);
        }

        [Route("action2")]
        [HttpGet]
        public IHttpActionResult Action2()
        {
            Console.WriteLine("Action2");
            return new RedirectResult(new Uri("http://localhost:3721/api/demo/action3"), this);
        }

        [Route("action3")]
        [HttpGet]
        public IHttpActionResult Action3()
        {
            return new OkResult(this);
        }

  

  

第二種 利用HttpReponseMessage

 

public HttpResponseMessage Get([FromUri]Person person)
        {
            var response = Request.CreateResponse(HttpStatusCode.Moved);
            response.Headers.Location = new Uri("http://localhost:20137/api/Demo/TestRedirect?name=張三");
            response.Content = new ObjectContent(typeof(string), "重定向傳值", new JsonMediaTypeFormatter());
            return response;// 這種也可以,不過action 返回類型是 HttpResponseMessage
          
        }
        [HttpGet]
        [Route("api/Demo/TestRedirect")]
        public IHttpActionResult TestRedirect([FromUri]string name)
        {
            return Json("成功跳轉"+ name);
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM