C#对接接口、带头文件信息

1 篇文章 0 订阅
1 篇文章 0 订阅

接口获取时,需要带头文件信息:

dic可以根据需要传入header参数

request.Header.Add(“”,””);

 

        public static string PostMoths(string url, object obj_model, Dictionary<string, string> dic = null)

        {

            string param = JsonConvert.SerializeObject(obj_model);

            System.Net.HttpWebRequest request;

            request = (System.Net.HttpWebRequest)WebRequest.Create(url);

            request.Method = "POST";

            request.ContentType = "application/json;charset=UTF-8";

            if (dic != null && dic.Count != 0)

            {

                foreach (var item in dic)

                {

                    request.Headers.Add(item.Key, item.Value);

                }

            }

            byte[] payload;

            payload = System.Text.Encoding.UTF8.GetBytes(param);

            request.ContentLength = payload.Length;

            string strValue = "";

            try

            {

                Stream writer = request.GetRequestStream();

                writer.Write(payload, 0, payload.Length);

                writer.Close();

                System.Net.HttpWebResponse response;

                response = (System.Net.HttpWebResponse)request.GetResponse();

                System.IO.Stream s;

                s = response.GetResponseStream();

                string StrDate = "";

                StreamReader Reader = new StreamReader(s, Encoding.UTF8);

                while ((StrDate = Reader.ReadLine()) != null)

                {

                    strValue += StrDate;

                }

            }

            catch (Exception e)

            {

                strValue = e.Message;

            }

            return strValue;

        }

 

 

以json为参数

 

        post方法调用接口获取json文件内容

        public string PostFunction(string url, string json)

        {

            string serviceAddress = url;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);

 

            request.Method = "POST";

            request.ContentType = "application/json";

            //string strContent = @"{ ""mmmm"": ""89e"",""nnnnnn"": ""0101943"",""kkkkkkk"": ""e8sodijf9""}";

            using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))

            {

                dataStream.Write(json);

                dataStream.Close();

            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            string encoding = response.ContentEncoding;

            if (encoding == null || encoding.Length < 1)

            {

                encoding = "UTF-8"; //默认编码 

            }

            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));

            string retString = reader.ReadToEnd();

            //解析josn

            //JObject jo = JObject.Parse(retString);

            //return jo["Token"].ToString();

            return retString.ToString();

        }

 

 

/// <summary>

          /// 指定Post地址使用Get 方式获取全部字符串

          /// </summary>

          /// <param name="url">请求后台地址</param>

          /// <returns></returns>

        public static string Post(string url)

        {

            string result = "";

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

            req.Method = "POST";

            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

            Stream stream = resp.GetResponseStream();

            //获取内容

            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))

            {

                result = reader.ReadToEnd();

            }

            return result;

        }

 

 

 

简单发送Get请求

 

/// <summary>

/// 指定Url地址使用Get 方式获取全部字符串

/// </summary>

/// <param name="url">请求链接地址</param>

/// <returns></returns>

public static string Get(string url)

{

    string result = "";

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

    Stream stream = resp.GetResponseStream();

    try

    {

        //获取内容

        using (StreamReader reader = new StreamReader(stream))

        {

            result = reader.ReadToEnd();

        }

    }

    finally

    {

        stream.Close();

    }

    return result;

}

 

 

带请求参数的Get方法

 

 

/// <summary>

/// 发送Get请求

/// </summary>

/// <param name="url">地址</param>

/// <param name="dic">请求参数定义</param>

/// <returns></returns>

public static string Get(string url, Dictionary<string, string> dic)

{

    string result = "";

    StringBuilder builder = new StringBuilder();

    builder.Append(url);

    if (dic.Count > 0)

    {

        builder.Append("?");

        int i = 0;

        foreach (var item in dic)

        {

            if (i > 0)

                builder.Append("&");

            builder.AppendFormat("{0}={1}", item.Key, item.Value);

            i++;

        }

    }

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(builder.ToString());

    //添加参数

    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

    Stream stream = resp.GetResponseStream();

    try

    {

        //获取内容

        using (StreamReader reader = new StreamReader(stream))

        {

            result = reader.ReadToEnd();

        }

    }

    finally

    {

        stream.Close();

    }

    return result;

}

 

自定义指定Http请求头,自定义指定编码解析返回结果

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

req.Method = "GET";

req.Headers["Accept-Language"] = "zh-CN,zh;q=0.8";

req.Referer = "https://www.baidu.com/";

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

Stream stream = resp.GetResponseStream();

string result = "";

//注意,此处使用的编码是:gb2312

//using (StreamReader reader = new StreamReader(stream, Encoding.Default))

using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("gb2312")))

{

    result = reader.ReadToEnd();

}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值