HttpWebRequest request = WebRequest.Create("url") as HttpWebRequest; request.Timeout = 8 * 60 * 1000; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded";//數據放在body中,以鍵值對形式 request.KeepAlive = true; request.Headers.Add("Authorization", Authorization);//api 的驗證 信息 string ss = System.Web.HttpUtility.UrlEncode("key") + "=" + System.Web.HttpUtility.UrlEncode(value);//參數使用urlencode編碼,
//空格全部用+代替
byte[] postData = encoding.GetBytes(ss); request.ContentLength = postData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(postData, 0, postData.Length); requestStream.Close(); var response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, encoding); string result = reader.ReadToEnd(); reader.Close(); responseStream.Close();
2 拿到api返回的json格式之后使用newtonsoft來反序列化
private static T DeserializeObject<T>(string equityJson) {
//將返回的json反序列化成objec object _object = JsonConvert.DeserializeObject(equityJson);
//轉換成jobject Newtonsoft.Json.Linq.JObject jObject = _object as Newtonsoft.Json.Linq.JObject;
//根據鍵值對的形式拿到對應的value string dataJson = jObject["data"].ToString(); object dataObj = JsonConvert.DeserializeObject(dataJson); JObject jdataObj = dataObj as JObject; string capabilityResults = jdataObj["capabilityResults"].ToString(); object capabilityResultsObj = JsonConvert.DeserializeObject(capabilityResults); JObject jcapabilityResultsObj = capabilityResultsObj as JObject; string equity_name_matching = jcapabilityResultsObj["equity_name_matching"].ToString(); T equityMatchReturn = JsonConvert.DeserializeObject<T>(equity_name_matching); return equityMatchReturn; }