Skip to content
This repository has been archived by the owner on Jul 8, 2022. It is now read-only.

Commit

Permalink
Кажется, на этот раз я исправил проблемы в библиотеке. HttpClient зам…
Browse files Browse the repository at this point in the history
…енил на низкоуровневый HttpWebRequest
  • Loading branch information
KirMozor committed Jun 30, 2022
1 parent 5f7b641 commit 90bf6bc
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 22 deletions.
1 change: 1 addition & 0 deletions Playlist.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Expand Down
115 changes: 95 additions & 20 deletions PostGet.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System.IO;
using System.Collections.Generic;
using System.Net;
using System.Text;
Expand All @@ -13,42 +13,117 @@ public class PostGet
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
private static HttpClient client = new HttpClient(handler);
//private static HttpClient client = new HttpClient(handler);
private const string UserAgent =
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36";
public static string PostReq(string url, string data)
{
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("User-Agent", UserAgent);
HttpResponseMessage resultPost;
using (client)
string resultPost;
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.UserAgent = UserAgent;
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(data);
using (Stream dataStream = request.GetRequestStream())
{
resultPost = client.PostAsync(url, new StringContent(data, Encoding.UTF8)).Result;
dataStream.Write(byteArray, 0, byteArray.Length);
}
return resultPost.Content.ReadAsStringAsync().Result;
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
resultPost = reader.ReadToEnd();
}
}
response.Close();
return resultPost;
}

public static string Get(string url)
{
string resultPost;
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.UserAgent = UserAgent;
request.Method = "GET";
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
resultPost = reader.ReadToEnd();
}
}
response.Close();
return resultPost;
}
public static string Get(string url) { return client.GetStringAsync(url).Result; }
public static string GetWithHeaders(string url, Dictionary<string, string> header)
{
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("User-Agent", UserAgent);
string resultPost;
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.UserAgent = UserAgent;
request.Method = "GET";
foreach (var i in header)
{
client.DefaultRequestHeaders.Add(i.Key, i.Value);
switch (i.Key)
{
case "accept":
request.Headers.Add(HttpRequestHeader.Accept, i.Value);
break;
case "Content-Type":
request.Headers.Add(HttpRequestHeader.ContentType, i.Value);
break;
case "Authorization":
request.Headers.Add(HttpRequestHeader.Authorization, i.Value);
break;
}
}
return client.GetStringAsync(url).Result;
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
resultPost = reader.ReadToEnd();
}
}
response.Close();
return resultPost;
}
public static string PostDataAndHeaders(string url, string data, Dictionary<string, string> header)
{
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("User-Agent", UserAgent);
foreach (var i in header) { client.DefaultRequestHeaders.Add(i.Key, i.Value); }
HttpResponseMessage resultPost;
using (client)
string resultPost;
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.UserAgent = UserAgent;
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(data);
foreach (var i in header)
{
switch (i.Key)
{
case "accept":
request.Headers.Add(HttpRequestHeader.Accept, i.Value);
break;
case "Content-Type":
request.Headers.Add(HttpRequestHeader.ContentType, i.Value);
break;
case "Authorization":
request.Headers.Add(HttpRequestHeader.Authorization, i.Value);
break;
}
}
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
resultPost = client.PostAsync(url, new StringContent(data, Encoding.UTF8)).Result;
using (StreamReader reader = new StreamReader(stream))
{
resultPost = reader.ReadToEnd();
}
}
return resultPost.Content.ReadAsStringAsync().Result;
response.Close();
return resultPost;
}
}
}
1 change: 0 additions & 1 deletion Track.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ public static JObject GetInformTrack(List<string> idTracks)
tracksIdString += idTracks[i] + ",";

string dataRequest = "track-ids=" + tracksIdString + "&with-positions=false";

string result = PostGet.PostDataAndHeaders(BaseUrl + urlToRequest, dataRequest, header);
JObject adResponse =
JsonConvert.DeserializeObject<JObject>(result);
Expand Down
2 changes: 1 addition & 1 deletion YandexMusicApi.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<PackageId>YandexMusicApi</PackageId>
<version>1.1.2</version>
<version>1.1.6</version>
<Authors>KirMozor</Authors>
<Description>Open-Source wrapper over the Yandex Music Api</Description>
<PackageIconUrl>https://download.cdn.yandex.net/from/yandex.ru/support/ru/music/files/icon_main.png</PackageIconUrl>
Expand Down

0 comments on commit 90bf6bc

Please sign in to comment.