C# - Request

请求分为多种

首先用 HttpClient 这个类来请求和接受响应

HttpClient 是用来发送 Http 请求和接受 Http 请求响应 的

在 System.Net.Http 命名空间下

派生于 HttpMessageInvoker

private static async void GetData()
{
    var Uri1 = "http://localhost:25025/Admin/Home/Index";
    var Uri2 = "http://localhost:25025/api/Site4App/Home/Test2?id=11";
    HttpClient httpClient = new HttpClient();
    // 可以给 httpClient 添加头部, 令其可以接受 json 格式的返回
    //httpClient.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    HttpResponseMessage response = null;
    // 发送 Get 请求, 注意是异步的
    response = await httpClient.GetAsync(Uri2);
    // 检查响应结果
    if (response.IsSuccessStatusCode)
    {
        Console.WriteLine("Response Status Code: " + response.StatusCode + " " + response.ReasonPhrase);
        // 返回的 response 中, Content 含有返回内容.
        // 需要用 ReadAs__Async() 方法来获取
        // ReadAs__Async() 是一个异步方法, 返回 Task<string>, 所以需要用 Result 来获取 string
        string responseBodyAsText = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine("Received payload of " + responseBodyAsText + " characters");
    }
    else
    {
        Console.WriteLine(response.ReasonPhrase);
    }
}

private static async void PostData()
{
    var Uri2 = "http://localhost:25025/api/Site4App/Home/Test4";
    var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.None };
    HttpClient httpClient = new HttpClient(handler);
    httpClient.BaseAddress = new Uri(Uri2);
    var content = new FormUrlEncodedContent(new Dictionary<string, string>()
    {
        {"id", "111"},
    });
    HttpResponseMessage response = null;
    response = await httpClient.PostAsync(Uri2, content);
    if (response.IsSuccessStatusCode)
    {
        string responseBodyAsText = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine(responseBodyAsText);
    }
    else
    {
        Console.WriteLine(response.ReasonPhrase);
    }
}

 

 

 

 

 

 

 

利用WebClient

/// <summary>
///  推送数据到指定 Url
/// </summary>
/// <param name="content">
///   已经加密过的内容
/// </param>
/// <returns></returns>
public static string Post(string content)
{
    var url = "https://wzgy.vicp.net/Business.ashx";
    string returnMsg = "";
    using (WebClient wc = new WebClient())
    {
        NameValueCollection data = new NameValueCollection();
        data.Add("content", content);
        wc.Encoding = Encoding.UTF8;
        returnMsg = Encoding.UTF8.GetString(wc.UploadValues(url, "POST", data));
    }
    return returnMsg;
}

 

 

利用HttpWebRequest

获取网页源代码

/// <summary>
/// 获取网页HTML源码
/// </summary>
/// <param name="url">链接 eg:http://www.baidu.com/ </param>
/// <param name="charset">编码 eg:Encoding.UTF8</param>
/// <returns>HTML源码</returns>
public static string GetHtmlSource(string url, Encoding charset)
{
    string _html = string.Empty;
    try
    {
        HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse _response = (HttpWebResponse)_request.GetResponse();
        using (Stream _stream = _response.GetResponseStream())
        {
            using (StreamReader _reader = new StreamReader(_stream, charset))
            {
                _html = _reader.ReadToEnd();
            }
        }
    }
    catch (WebException ex)
    {
        using (StreamReader sr = new StreamReader(ex.Response.GetResponseStream()))
        {
            _html = sr.ReadToEnd();
        }
    }
    catch (Exception ex)
    {
        _html = ex.Message;
    }
    return _html;
}

 

 

 

posted @ 2017-01-07 15:12  `Laimic  阅读(481)  评论(0)    收藏  举报