|
|
@ -7,6 +7,7 @@ using System.Net; |
|
|
|
using System.Net.Http; |
|
|
|
using System.Net.Http.Headers; |
|
|
|
using System.Text; |
|
|
|
using System.Windows; |
|
|
|
|
|
|
|
namespace 齐越慧眼.Helpers |
|
|
|
{ |
|
|
@ -14,8 +15,98 @@ namespace 齐越慧眼.Helpers |
|
|
|
{ |
|
|
|
string boundary = ""; |
|
|
|
|
|
|
|
|
|
|
|
private string HttpPostData(string url, string cookie, byte[] files, string fileKeyName="file") |
|
|
|
{ |
|
|
|
string responseContent; |
|
|
|
var memStream = new MemoryStream(); |
|
|
|
var webRequest = (HttpWebRequest)WebRequest.Create(url); |
|
|
|
// 边界符
|
|
|
|
var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); |
|
|
|
// 边界符
|
|
|
|
var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n"); |
|
|
|
|
|
|
|
// 最后的结束符
|
|
|
|
var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n"); |
|
|
|
|
|
|
|
// 设置属性
|
|
|
|
webRequest.Method = "POST"; |
|
|
|
webRequest.ContentType = "multipart/form-data; boundary=" + boundary; |
|
|
|
|
|
|
|
// 写入文件
|
|
|
|
const string filePartHeader = |
|
|
|
"Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + |
|
|
|
"Content-Type: image/jpeg\r\n\r\n"; |
|
|
|
var header = string.Format(filePartHeader, fileKeyName, "aaa.jpg"); |
|
|
|
var headerbytes = Encoding.UTF8.GetBytes(header); |
|
|
|
|
|
|
|
memStream.Write(beginBoundary, 0, beginBoundary.Length); |
|
|
|
memStream.Write(headerbytes, 0, headerbytes.Length); |
|
|
|
|
|
|
|
memStream.Write(files); |
|
|
|
|
|
|
|
//// 写入字符串的Key
|
|
|
|
//var stringKeyHeader = "\r\n--" + boundary +
|
|
|
|
// "\r\nContent-Disposition: form-data; name=\"{0}\"" +
|
|
|
|
// "\r\n\r\n{1}\r\n";
|
|
|
|
|
|
|
|
//foreach (byte[] formitembytes in from string key in stringDict.Keys
|
|
|
|
// select string.Format(stringKeyHeader, key, stringDict[key])
|
|
|
|
// into formitem
|
|
|
|
// select Encoding.UTF8.GetBytes(formitem))
|
|
|
|
//{
|
|
|
|
// memStream.Write(formitembytes, 0, formitembytes.Length);
|
|
|
|
//}
|
|
|
|
|
|
|
|
// 写入最后的结束边界符
|
|
|
|
memStream.Write(endBoundary, 0, endBoundary.Length); |
|
|
|
|
|
|
|
webRequest.ContentLength = memStream.Length; |
|
|
|
|
|
|
|
var requestStream = webRequest.GetRequestStream(); |
|
|
|
|
|
|
|
memStream.Position = 0; |
|
|
|
var tempBuffer = new byte[memStream.Length]; |
|
|
|
memStream.Read(tempBuffer, 0, tempBuffer.Length); |
|
|
|
memStream.Close(); |
|
|
|
|
|
|
|
requestStream.Write(tempBuffer, 0, tempBuffer.Length); |
|
|
|
requestStream.Close(); |
|
|
|
|
|
|
|
webRequest.Headers.Add("cookie", cookie); |
|
|
|
webRequest.Headers.Add("origin", "https://www.jd.com"); |
|
|
|
webRequest.Headers.Add("referer", "https://www.jd.com"); |
|
|
|
webRequest.Headers.Add("sec-fetch-dest", "iframe"); |
|
|
|
webRequest.Headers.Add("sec-fetch-mode", "navigate"); |
|
|
|
webRequest.Headers.Add("sec-fetch-site", "same-site"); |
|
|
|
webRequest.Headers.Add("sec-fetch-user", "?1"); |
|
|
|
webRequest.Headers.Add("upgrade-insecure-requests", "1"); |
|
|
|
webRequest.Headers.Add("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); |
|
|
|
webRequest.Headers.Add("accept-encoding", " deflate, br"); |
|
|
|
webRequest.Headers.Add("accept-language", "zh-CN,zh;q=0.9"); |
|
|
|
webRequest.Headers.Add("cache-control", "no-cache"); |
|
|
|
|
|
|
|
var httpWebResponse = (HttpWebResponse)webRequest.GetResponse(); |
|
|
|
|
|
|
|
using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(), |
|
|
|
Encoding.GetEncoding("utf-8"))) |
|
|
|
{ |
|
|
|
responseContent = httpStreamReader.ReadToEnd(); |
|
|
|
} |
|
|
|
|
|
|
|
httpWebResponse.Close(); |
|
|
|
webRequest.Abort(); |
|
|
|
|
|
|
|
return responseContent; |
|
|
|
} |
|
|
|
|
|
|
|
public string UploadFile(byte[] file, string cookie) |
|
|
|
{ |
|
|
|
// 边界符
|
|
|
|
var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); |
|
|
|
var b = GetFileData("upload.jpg", new MemoryStream(file), boundary: boundary); |
|
|
|
// return HttpPostData("https://search.jd.com/image?op=upload", cookie, file);
|
|
|
|
//return "";
|
|
|
|
|
|
|
|
using (System.Net.WebClient webClient = new System.Net.WebClient()) |
|
|
|
{ |
|
|
@ -33,19 +124,26 @@ namespace 齐越慧眼.Helpers |
|
|
|
webClient.Headers.Add("accept-encoding", " deflate, br"); |
|
|
|
webClient.Headers.Add("accept-language", "zh-CN,zh;q=0.9"); |
|
|
|
webClient.Headers.Add("cache-control", "no-cache"); |
|
|
|
// 边界符
|
|
|
|
var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); |
|
|
|
|
|
|
|
webClient.Headers.Add("content-type", $"multipart/form-data; boundary={boundary}"); |
|
|
|
|
|
|
|
|
|
|
|
var b = GetFileData("upload.jpg", new MemoryStream(file), boundary: boundary); |
|
|
|
var result = webClient.UploadData("https://search.jd.com/image?op=upload", b.ToArray()); |
|
|
|
|
|
|
|
string json = Encoding.Default.GetString(result); |
|
|
|
|
|
|
|
return json; |
|
|
|
} |
|
|
|
catch(Exception ex) { |
|
|
|
catch(WebException ex) |
|
|
|
{ |
|
|
|
string responseText; |
|
|
|
|
|
|
|
using (var reader = new StreamReader(ex.Response.GetResponseStream())) |
|
|
|
{ |
|
|
|
responseText = reader.ReadToEnd(); |
|
|
|
} |
|
|
|
|
|
|
|
MessageBox.Show(responseText); |
|
|
|
WpfNoticeMsg.NoticeMessage.Show("请退出重新登录京东后重试!"); |
|
|
|
} |
|
|
|
} |
|
|
|