using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace Work.Taobao { public class TbHttpReauest { public string url = ""; public string cookies = ""; //Calls request functions sequentially. string responseText; public string MakeRequests() { HttpWebResponse response; if (Request_trade_taobao_com(out response)) { //Success, possibly use response. responseText = ReadResponse(response); response.Close(); } else { //Failure, cannot use response. } return responseText; } //Returns the text contained in the response. For example, the page HTML. Only handles the most common HTTP encodings. private static string ReadResponse(HttpWebResponse response) { using (Stream responseStream = response.GetResponseStream()) { Encoding enc = Encoding.UTF8; try { var v = response.ResponseUri.Host; if (v.Contains("trade.1688.com")) { enc = Encoding.Default; } } catch (Exception) { } Stream streamToRead = responseStream; if (response.ContentEncoding.ToLower().Contains("gzip")) { streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress); } else if (response.ContentEncoding.ToLower().Contains("deflate")) { streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress); } using (StreamReader streamReader = new StreamReader(streamToRead, enc)) { return streamReader.ReadToEnd(); } } } /// /// Tries to request the URL: https://trade.taobao.com/trade/detail/trade_order_detail.htm?biz_order_id=1088944291427556938 /// /// After the function has finished, will possibly contain the response to the request. /// True if the request was successful; false otherwise. private bool Request_trade_taobao_com(out HttpWebResponse response) { response = null; try { //Create request to URL. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //Set request headers. request.KeepAlive = true; request.Headers.Set(HttpRequestHeader.Pragma, "no-cache"); request.Headers.Set(HttpRequestHeader.CacheControl, "no-cache"); request.Headers.Add("Upgrade-Insecure-Requests", @"1"); request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"; request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br"); request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9"); request.Headers.Set(HttpRequestHeader.Cookie, cookies); //Get response to request. response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { //ProtocolError indicates a valid HTTP response, but with a non-200 status code (e.g. 304 Not Modified, 404 Not Found) if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response; else return false; } catch (Exception) { if (response != null) response.Close(); return false; } return true; } } }