Files
29WxOrder/Work/Taobao/TbHttpReauest.cs
T
2026-06-12 10:41:13 +08:00

116 lines
4.2 KiB
C#

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();
}
}
}
/// <summary>
/// Tries to request the URL: https://trade.taobao.com/trade/detail/trade_order_detail.htm?biz_order_id=1088944291427556938
/// </summary>
/// <param name="response">After the function has finished, will possibly contain the response to the request.</param>
/// <returns>True if the request was successful; false otherwise.</returns>
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;
}
}
}