.net通过url访问服务器获取服务器返回数据

来源:互联网 发布:上海网络推广公司外包 编辑:程序博客网 时间:2024/04/28 16:34
一、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协议urlurl +="?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


json调用方式举例:OAuthUser OAuthUser_Model = Get_UserInfo(token, openid); //联调测试Response.Write("accesstoken:" + token + "userid:" + OAuthUser_Model.userid + "用户名称:" + OAuthUser_Model.name + "部门:" + OAuthUser_Model.dept);

二、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协议urlurl +="?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);





0 0
原创粉丝点击