zoukankan      html  css  js  c++  java
  • 接口访问方式(备忘)

    using System;
    using System.IO;
    using System.Net;
    
    public class HttpPut {
    
      public static void Main(string [] args) {
    
        string url = "http://www.oschina.net/";
        string username = "user";
        string password = "password";
        string data = "This data should be written to the URL.";
    
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "PUT";
        request.Credentials = new NetworkCredential(username, password);
        request.ContentLength = data.Length;
        request.ContentType = "text/plain";
    
        using (StreamWriter writer = new StreamWriter(request.GetRequestStream( ))) {
          writer.WriteLine(data);
        }
    
        WebResponse response = request.GetResponse( );
    
        using (StreamReader reader = new StreamReader(response.GetResponseStream( ))) {
          while (reader.Peek( ) != -1) {
            Console.WriteLine(reader.ReadLine( ));
          }
        }
      }
    }
    PUT
    //body是要传递的参数,格式"roleId=1&uid=2"
    //post的cotentType填写:
    //"application/x-www-form-urlencoded"
    //soap填写:"text/xml; charset=utf-8"
        public static string PostHttp(string url, string body, string contentType)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    
            httpWebRequest.ContentType = contentType;
            httpWebRequest.Method = "POST";
            httpWebRequest.Timeout = 20000;
    
            byte[] btBodys = Encoding.UTF8.GetBytes(body);
            httpWebRequest.ContentLength = btBodys.Length;
            httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
            string responseContent = streamReader.ReadToEnd();
    
            httpWebResponse.Close();
            streamReader.Close();
            httpWebRequest.Abort();
            httpWebResponse.Close();
    
            return responseContent;
        }
    
    POST方法(httpWebRequest)
    

      

    /// <summary>
            /// 通过WebClient类Post数据到远程地址,需要Basic认证;
            /// 调用端自己处理异常
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="paramStr">name=张三&age=20</param>
            /// <param name="encoding">请先确认目标网页的编码方式</param>
            /// <param name="username"></param>
            /// <param name="password"></param>
            /// <returns></returns>
            public static string Request_WebClient(string uri, string paramStr, Encoding encoding, string username, string password)
            {
                if (encoding == null)
                    encoding = Encoding.UTF8;
    
                string result = string.Empty;
    
                WebClient wc = new WebClient();
    
                // 采取POST方式必须加的Header
                wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
    
                byte[] postData = encoding.GetBytes(paramStr);
    
                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    wc.Credentials = GetCredentialCache(uri, username, password);
                    wc.Headers.Add("Authorization", GetAuthorization(username, password));
                }
    
                byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
                return encoding.GetString(responseData);// 解码                  
            }
    
    POST方法(WebClient)
    

       

    public static string GetHttp(string url, HttpContext httpContext)
        {
            string queryString = "?";
    
            foreach (string key in httpContext.Request.QueryString.AllKeys)
            {
                queryString += key + "=" + httpContext.Request.QueryString[key] + "&";
            }
    
            queryString = queryString.Substring(0, queryString.Length - 1);
    
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url + queryString);
    
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "GET";
            httpWebRequest.Timeout = 20000;
    
            //byte[] btBodys = Encoding.UTF8.GetBytes(body);
            //httpWebRequest.ContentLength = btBodys.Length;
            //httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
            string responseContent = streamReader.ReadToEnd();
    
            httpWebResponse.Close();
            streamReader.Close();
    
            return responseContent;
        }
    
    Get方法(HttpWebRequest)
    

      

    /// <summary>
            /// 通过 WebRequest/WebResponse 类访问远程地址并返回结果,需要Basic认证;
            /// 调用端自己处理异常
            /// </summary>
            /// <param name="uri"></param>
            /// <param name="timeout">访问超时时间,单位毫秒;如果不设置超时时间,传入0</param>
            /// <param name="encoding">如果不知道具体的编码,传入null</param>
            /// <param name="username"></param>
            /// <param name="password"></param>
            /// <returns></returns>
            public static string Request_WebRequest(string uri, int timeout, Encoding encoding, string username, string password)
            {
                string result = string.Empty;
    
                WebRequest request = WebRequest.Create(new Uri(uri));
    
                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    request.Credentials = GetCredentialCache(uri, username, password);
                    request.Headers.Add("Authorization", GetAuthorization(username, password));
                }
    
                if (timeout > 0)
                    request.Timeout = timeout;
    
                WebResponse response = request.GetResponse();
                Stream stream = response.GetResponseStream();
                StreamReader sr = encoding == null ? new StreamReader(stream) : new StreamReader(stream, encoding);
    
                result = sr.ReadToEnd();
    
                sr.Close();
                stream.Close();
    
                return result;
            }
    
            #region # 生成 Http Basic 访问凭证 #
    
            private static CredentialCache GetCredentialCache(string uri, string username, string password)
            {
                string authorization = string.Format("{0}:{1}", username, password);
    
                CredentialCache credCache = new CredentialCache();
                credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
    
                return credCache;
            }
    
            private static string GetAuthorization(string username, string password)
            {
                string authorization = string.Format("{0}:{1}", username, password);
    
                return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
            }
    
            #endregion
    
    basic验证的WebRequest/WebResponse
    

      

  • 相关阅读:
    Python2和python3的对比
    AirtestIDE学习(一)详解(跨平台的UI自动化编辑器)
    2021/2/18 一些概念笔记
    Django学习笔记(一)
    安装python第三方包时报错
    pycharm调试nodejs代码
    postman+jwt接口做各个环境接口测试(三)
    iOS------App之间传递数据的几种方式
    iOS------教你如何APP怎么加急审核
    关于苹果延迟了App接入HTTPS服务截止日期
  • 原文地址:https://www.cnblogs.com/CielWater/p/3929432.html
Copyright © 2011-2022 走看看