使用httpclient在C#中获取和发布请求的反馈和可能的更好方法

时间:2018-11-19 19:28:23

标签: c# httpwebrequest httpclient system.net.httpwebrequest

对我的操作方式有些困扰,并希望以更好的方式获得一些反馈。

这是我写的一些要发布到网站上的代码,我还将显示获取请求。

因此,假设您在构造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;

}

只是在我的方法上寻找一些建设性的批评,当我输入新的get和post请求时,它会感觉是重复的,而且如果感觉到重复,通常会给我留下印象,然后可能会有更好的方法。让这个问题分为两部分,即PostRequest和GetRequest方法。我认为最好将其放入自己的类中,以便在其他解决方案/项目中可重用?是/否?

在此先谢谢你。

0 个答案:

没有答案