Немного обеспокоен тем, как я это делаю, и хотел получить отзыв о лучшем способе.
Вот код, который я написал для публикации на веб-сайте, я также покажу запрос на получение.
Итак, при условии, что вам не нужно видеть, когда мы создаем HttpClient, CookieContainer и ClientHandler, вот код:
List<KeyValuePair<string, string>> ListLogin = new List<KeyValuePair<string, string>>(); //key value pair is the input name and then the input value to be used
ListLogin = AddToList("userid", "someUser", ListLogin);
ListLogin = AddToList("passwd", "somePassword", ListLogin);
ListLogin = AddToList("domain", "whoCares", ListLogin);
ListLogin = AddToList("destinationURL", "/", ListLogin);
IEnumerable<KeyValuePair<string, string>> QueryLogin = GetEnumerable(ListLogin);
PostRequest("URL.com", QueryLogin);
Итак, вышеизложенное строит пару ключ-значение для чегосервер будет ожидать.Затем, используя методы для создания запроса.
Я также покажу метод AddToList:
public static List<KeyValuePair<string, string>> AddToList(string
strInput1, string strInput2, List<KeyValuePair<string, string>>
ListInput)
{
List<KeyValuePair<string, string>> NewList = ListInput;
NewList.Add(new KeyValuePair<string, string>(strInput1, strInput2));
return NewList;
}
Вот также метод getEnumerable:
public static IEnumerable<KeyValuePair<string, string>> GetEnumerable(List<KeyValuePair<string, string>> ListInput)
{
IEnumerable<KeyValuePair<string, string>> queriesNew = ListInput;
return queriesNew;
}
Наконец методы отправки и получения запроса:
async static void PostRequest(string strUrl,
IEnumerable<KeyValuePair<string, string>> queries)
{
Uri uri = new Uri(strUrl);
cookieContainer.GetCookies(uri);
HttpContent q = new FormUrlEncodedContent(queries);
HttpResponseMessage response = await client.PostAsync(strUrl, q);
HttpContent content = response.Content;
string myContent = await content.ReadAsStringAsync();
// Console.WriteLine(myContent);
// Console.WriteLine(response);
IEnumerable<Cookie> responseCookies =
response.Dispose();
}
async static Task<String> GetRequest(string strUrl)
{
HttpResponseMessage response = await client.GetAsync(strUrl);
HttpContent content = response.Content; //content of the response
string myContent = await content.ReadAsStringAsync();
Console.WriteLine(myContent);
response.Dispose(); //dispose of the response
return myContent;
}
Просто ищу конструктивную критику моего подхода. Когда я набираю new get иотправлять запросы, они просто кажутся повторяющимися, и у меня обычно складывалось впечатление, что если они кажутся повторяющимися, может быть, есть лучший способ. А затем сделать это немного из вопроса, состоящего из двух частей: методов PostRequest и GetRequest. Я думаю, что это будетбыть лучше, чтобы поместить это в свой собственный класс, чтобы его можно было использовать в других решениях / проектах?Yay / Nay?
Спасибо заранее.