VB.NET通過URL POST請求和GET請求

 

一、url爲http協議

1、普通調用:

public string GetInfo(string url)
    {
        //訪問http方法
        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);
        strBuff = respStreamReader.ReadToEnd();
        return strBuff;
    }

方法調用舉例:

string url = "http://192.168.1.38:8088/api/user/get_info";    //http協議url
url +="?token=" + token + "&openid=" + openid ;
string userInfo = GetInfo(url);

2、json調用(使用Json方法訪問url需要在.net3.5以上版本):

#region Json訪問url方式(使用該方法需要在.net3.5以上)
    //獲得用戶信息
    protected OAuthUser Get_UserInfo(string token , string openid)
    {
        //http協議url
        string Str = GetJson("http://192.168.1.38:8088/api/user/get_info?token=" + token + "&openid=" + openid); 
        OAuthUser OAuthUser_Model = JsonHelper.ParseFromJson(Str);
        return OAuthUser_Model;
    }
 
    protected string GetJson(string url)
    {
        //訪問http
        WebClient wc = new WebClient();
        wc.Credentials = CredentialCache.DefaultCredentials;
        wc.Encoding = Encoding.UTF8;
        string returnText = wc.DownloadString(url);
        if (returnText.Contains("errcode"))
        {
            //可能發生錯誤
        }
        //Response.Write(returnText);
        return returnText;
    }
    ///
    /// 用戶信息類
    ///
    public class OAuthUser
    {
        public OAuthUser()
        { }
        #region 數據庫字段
        private string _dept;
        private string _name;
        private string _userid;
        #endregion
 
        #region 字段屬性
        ///
        /// 部門
        ///
        public string dept
        {
            set { _dept = value; }
            get { return _dept; }
        }
        ///
        /// 用戶名稱
        ///
        public string name
        {
            set { _name = value; }
            get { return _name; }
        }
        ///
        /// 用戶的唯一標識
        ///
        public string userid
        {
            set { _userid = value; }
            get { return _userid; }
        }
        #endregion
    }
 
    public class JsonHelper
    {
        ///  
        /// 生成Json格式  
        ///  
        ///  
        ///  
        ///  
        public static string GetJson(T obj)
        {
            DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, obj);
                string szJson = Encoding.UTF8.GetString(stream.ToArray()); return szJson;
            }
        }
        ///  
        /// 獲取Json的Model  
        ///  
        ///  
        ///  
        ///  
        public static T ParseFromJson(string szJson)
        {
            T obj = Activator.CreateInstance();
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                return (T)serializer.ReadObject(ms);
            }
        }
    }
    #endregion

二、url爲https協議
只需加入一句話即可:

//訪問https方法(先調用以下方法)
using System.Security.Cryptography.X509Certificates;
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
        //直接確認,否則打不開
        return true;
    }

1、普通調用:

 public string GetInfo(string url)
    {
        //訪問https方法需加上這句話(CheckValidationResult就是以上方法)
        ServicePointManager.ServerCertificateValidationCallback = 
            new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
        //訪問http方法(不需要加上面那句話)
        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);
        strBuff = respStreamReader.ReadToEnd();
        return strBuff;
    }

方法調用舉例:

string url = "https://192.168.1.38:8088/api/user/get_info";    //htts協議url
url +="?token=" + token + "&openid=" + openid ;
string userInfo = GetInfo(url);

2、Json調用

//獲得用戶信息
    protected OAuthUser Get_UserInfo(string token , string openid)
    {
        //htts協議url
        string Str = GetJson("https://192.168.1.38:8088/api/user/get_info?token=" + token + "&openid=" + openid);
        OAuthUser OAuthUser_Model = JsonHelper.ParseFromJson(Str);
        return OAuthUser_Model;
    }
 
protected string GetJson(string url)
    {
        //訪問https需加上這句話
        ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
        //訪問http(不需要加上面那句話)
        WebClient wc = new WebClient();
        wc.Credentials = CredentialCache.DefaultCredentials;
        wc.Encoding = Encoding.UTF8;
        string returnText = wc.DownloadString(url);
 
        if (returnText.Contains("errcode"))
        {
            //可能發生錯誤
        }
        //Response.Write(returnText);
        return returnText;
    }
json調用方式舉例:
OAuthUser OAuthUser_Model = Get_UserInfo(token, openid);
 //聯調測試
Response.Write("accesstoken:" + token + "
userid:" + OAuthUser_Model.userid + "
用戶名稱:" + OAuthUser_Model.name + "
部門:" + OAuthUser_Model.dept);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章