post方法使用集案例

post方法集(客户端里的后台方法),主要实现了客户端后台方法,post的数据获取和传值。

提取出的方法:

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
         {


            //获取网页标签代码
             GetHtml("https://www.cnblogs.com/kissdodog/archive/2013/04/06/3002779.html");


            //post传值(Json格式)和获取值(Json格式),较为完美
            string Js = "{ \"Name\": \"Test\" }";
            string get= PostHttpUrl("http://localhost:4393/api/values",Js);


            //获得Get方法接口
            WebGet("http://localhost:4393/api/values");


            //Webpost2传入Json格式的string 只是传入无返回值
             string json = "{ \"Name\": \"Test\" }";
             WebPost2("http://localhost:4393/api/values",json,null);


            string  js = "Name="+"bu";//自动编码格式 "类名="+"参数"
            //获得Post方法接口
            WebPost("http://localhost:4393/api/values","",js);

            return View();
        }

        /// <summary>
        /// 获取整个网页的代码标签
        /// </summary>
        /// <param name="url">网站地址</param>
        /// <returns></returns>
        private static string GetHtml(string url)
        {
            /**HttpWebRequest类介绍
             基本满足网络的请求的需求:获取网页值,...
             */
            
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);    //创建一个请求示例
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  //获取响应,即发送请求
            Stream responseStream = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
            return streamReader.ReadToEnd();
        }


        /// <summary>
        /// .net 后台 post http地址请求
        /// </summary>
        /// <param name="uri">请求地址</param>
        /// <param name="postData">请求数据</param>
        /// type=application/x-www-form-urlencoded  
        /// type=application/json;charset=UTF-8
        /// <returns></returns>
        private string PostHttpUrl(string uri, string postData)
        {
            try
            {
                byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postData); //字符串转换成ASCII码,有利于流的传输
                HttpWebRequest objWebRequest = (HttpWebRequest)WebRequest.Create(uri); //发送地址
                objWebRequest.Method = "POST";//提交方式
                objWebRequest.ContentType = "application/json;charset=UTF-8";//获取的值的类型,Json
                objWebRequest.ContentLength = byteArray.Length; //需要发送的内容的大小
                using (Stream newStream = objWebRequest.GetRequestStream())
                {
                    newStream.Write(byteArray, 0, byteArray.Length); //写入参数
                    newStream.Close();
                }
                HttpWebResponse response = (HttpWebResponse)objWebRequest.GetResponse();//获取响应
                StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);//重新把获取数据的流转换成ASCII码
                return sr.ReadToEnd(); // 返回的数据,从头把流转换成字符
            }
            catch (Exception ex)
            {
                return "网络错误:" + ex.Message.ToString();
            }
        }

        /// <summary>
        /// WebPostApi请求传参和获取值
        /// </summary>
        /// <param name="url">post链接</param>
        /// <param name="json">传入的Json参数</param>
        private void WebPost2(string url,string json ,string action)
        {
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var jObject = JObject.Parse(json);
            var response = client.PostAsJsonAsync(url, jObject).Result;
            if (!response.IsSuccessStatusCode)
            {
                Response.Write(string.Format("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase));
            }

        }


        /// <summary>
        /// GET,获取url的返回值
        /// </summary>
        /// <param name="url">eg:http://m.weather.com.cn/atad/101010100.html </param>
        public string WebGet(string url)
        {
            try
            {
                string strBuff = "";
                Uri httpURL = new Uri(url);
                ///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换 
                HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
                ///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换 
                HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
                ///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容 
                ///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理 
                Stream respStream = httpResp.GetResponseStream();
                ///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以 
                //StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8) 
                StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);//Encoding.UTF8
                strBuff = respStreamReader.ReadToEnd();
                return strBuff;
            }
            catch
            {

                return "400";
            }
        }


        /// <summary>
        /// Post方法
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="method">方法action</param>
        /// <param name="param">json参数</param>
        /// <returns></returns>
        public static string WebPost(string url, string method, string param)
        {
            try
            {
                //转换输入参数的编码类型,获取bytep[]数组 转换成Json格式
                //byte[] byteArray = Encoding.UTF8.GetBytes("json=" + param);
                byte[] byteArray = Encoding.UTF8.GetBytes(param);
                //初始化新的webRequst
                //1. 创建httpWebRequest对象
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url + "/" + method));
                //2. 初始化HttpWebRequest对象
                webRequest.Method = "POST";
                webRequest.ContentType = "application/x-www-form-urlencoded";
                webRequest.ContentLength = byteArray.Length;
                //3. 附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。)
                Stream newStream = webRequest.GetRequestStream();//创建一个Stream,赋值是写入HttpWebRequest对象提供的一个stream里面
                newStream.Write(byteArray, 0, byteArray.Length);
               // newStream.Close();
                //4. 读取服务器的返回信息
                HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
                StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                string phpend = php.ReadToEnd();
                return phpend;

            }
            catch
            {
                return "400";
            }
        }

      
    }
}
配合项目阅读:https://download.csdn.net/download/weixin_42401291/10724179

分客户端和服务端,需要同时运行。

希望同行的多多指点。

程序开发(ASP.NET、C#)、网站建设(H5)、小程序、公众号等相关开发联系QQ:1174787689 备注 程序开发合作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧方

开发程序不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值