問題
使用 HttpWebRequest 下載/呼叫API
解決方法
Code
public static void SetHeaderValue(WebHeaderCollection header, string name, string value) { var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if (property != null) { var collection = property.GetValue(header, null) as NameValueCollection; collection[name] = value; } } public static Stream getHttpWebResponse(string traget, WebProxy webProxy, int timeOut) { return getHttpWebResponse(traget, webProxy, timeOut, null); } public static Stream getHttpWebResponse(string traget, WebProxy webProxy, int timeOut, Dictionary<string, string>使用方式headerInfo) { ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(traget); httpRequest.Method = WebRequestMethods.Http.Get; if (webProxy != null) { httpRequest.Timeout = timeOut; httpRequest.Proxy = webProxy; webProxy.BypassProxyOnLocal = false; } if (headerInfo != null) { foreach (KeyValuePair<string, string> pair in headerInfo) { SetHeaderValue(httpRequest.Headers, pair.Key, pair.Value); } } HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse(); Stream httpResponseStream = httpResponse.GetResponseStream(); return httpResponseStream; } public static string getStream2String(Stream httpResponseStream, Encoding encoding) { using (var reader = new StreamReader(httpResponseStream, encoding)) { string content = reader.ReadToEnd(); return content; } }
Stream httpResponseStream = getHttpWebResponse(traget, null, 5000); string content= getStream2String(httpResponseStream, Encoding.UTF8);
沒有留言:
張貼留言