首页 > 代码库 > c#从Web Service 获取信息并解析json
c#从Web Service 获取信息并解析json
如果需要登录,使用下边方法,如果为匿名登录的,可以省略,在全局变量中定义public static string Cookiemsg,方便重复使用cookie。
1 public static CookieMsg GetCookieMessage(string name, string password) 2 { 3 CookieMsg cookieMsg = null; 4 string retString = ""; 5 try 6 { 7 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("&user=" + name + "&pwd=" + password); 8 9 request.Method = "GET";10 request.ContentType = "text/html;charset=UTF-8";11 HttpWebResponse response = (HttpWebResponse)request.GetResponse();12 13 Stream myResponseStream = response.GetResponseStream();14 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));15 retString = myStreamReader.ReadToEnd();16 17 myStreamReader.Close();18 myResponseStream.Close();19 20 cookieMsg = ManageCookieMsg(retString);21 }22 catch (Exception ex)23 {24 25 }26 27 return cookieMsg;28 }29 30 31 private static CookieMsg ManageCookieMsg(string json)32 {33 34 MemoryStream stream2 = new MemoryStream();35 DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(CookieMsg));36 StreamWriter wr = new StreamWriter(stream2);37 CookieMsg cookieMsg = null;38 try39 {40 wr.Write(json);41 wr.Flush();42 stream2.Position = 0;43 Object obj = ser2.ReadObject(stream2);44 cookieMsg = (CookieMsg)obj;45 46 Cookiemsg = "person_id=" + cookieMsg.Person_id + ";" + "identity_id=" + cookieMsg.Identity + ";" + "token=" + cookieMsg.Token;47 }48 catch (Exception ex)49 {50 51 }52 53 return cookieMsg;54 }
需要另一个类中添加封装Json的属性,会将返回的用户信息封装在一个类中。
1 using System.Collections.Generic; 2 using System.Runtime.Serialization; 3 4 #region Cookie 5 6 [DataContract] 7 public class CookieMsg 8 { 9 [DataMember]10 private string person_id;11 12 public string Person_id13 {14 get { return person_id; }15 set { person_id = value; }16 }17 18 [DataMember]19 private string person_name;20 21 public string Person_name22 {23 get { return person_name; }24 set { person_name = value; }25 }26 27 [DataMember]28 private string identity;29 30 public string Identity31 {32 get { return identity; }33 set { identity = value; }34 }35 36 [DataMember]37 private string token;38 39 public string Token40 {41 get { return token; }42 set { token = value; }43 }44 45 }46 47 #endregion
下面开始拼装Http的头,获取所需信息。
1 private static string WebMessage(string url) 2 { 3 string retString = ""; 4 try 5 { 6 7 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 8 request.Method = "GET"; 9 request.Accept = "application/json, text/javascript, */*; q=0.01";10 request.ContentType = "application/x-www-form-urlencoded";11 request.Proxy = null;12 request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch");13 request.Timeout = 1000;14 request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36";15 request.KeepAlive = true;16 request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");17 request.Headers.Add("Cookie", Cookiemsg);18 19 ////填充参数20 byte[] param;21 StringBuilder sb = new StringBuilder();22 param = System.Text.Encoding.UTF8.GetBytes(sb.ToString());23 request.ContentLength = param.Length;24 25 HttpWebResponse response = (HttpWebResponse)request.GetResponse();26 27 28 Stream myResponseStream = response.GetResponseStream();29 if (response.ContentEncoding.ToLower().Contains("gzip"))30 {31 32 myResponseStream = new GZipStream(myResponseStream, CompressionMode.Decompress);33 }34 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));35 36 retString = myStreamReader.ReadToEnd();37 38 myStreamReader.Close();39 myResponseStream.Close();40 41 }42 catch (Exception ex)43 {44 45 }46 return retString;47 }
返回的Json字符串再使用上面的封装方法,按照实际返回信息进行封装就可以了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。