116 lines
4.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|