using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace Ropin.Core.Common
{
public class HttpHelper
{
///
///
///
///
///
///
///
public static string Get(string uri, string username, string password)
{
string result = string.Empty;
WebClient client = new WebClient();
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
client.Credentials = GetCredentialCache(uri, username, password);
client.Headers.Add("Authorization", GetAuthorization(username, password));
}
return client.DownloadString(uri);
}
///
///
///
///
///
///
///
///
public static string Post(string uri, string paramStr, string username, string password)
{
string result = string.Empty;
WebClient client = new WebClient();
// 采取POST方式必须加的Header
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] postData = Encoding.UTF8.GetBytes(paramStr);
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
client.Credentials = GetCredentialCache(uri, username, password);
client.Headers.Add("Authorization", GetAuthorization(username, password));
}
byte[] responseData = client.UploadData(uri, "POST", postData); // 得到返回字符流
return Encoding.UTF8.GetString(responseData);// 解码
}
//public static string Post2(string uri, string paramStr, string username, string password)
//{
// HttpClient httpClient = httpClientFactory.CreateClient();
// var msgData = new TpushMsgModel
// {
// C_DevStoreCode = devstore.C_ID,
// C_MsgTypeCode = "MSG_TYPE_012",
// Msg = devstore.C_Name + "的" + (string)ala["name"] + "设备点报警" + " 设备点值:" + (string)ala["value"],
// Subject = "设备点报警",
// DevNumber = devstore.C_NumberCode,
// DevName = devstore.C_Name,
// CreateOn = DateTime.Now.ToString(),
// UserName = "设备",
// };
// var httpRequestMessage = new HttpRequestMessage
// {
// Method = HttpMethod.Post,
// RequestUri = new Uri(uri),
// Content = new StringContent(JsonConvert.SerializeObject(msgData), Encoding.UTF8, "application/json")
// };
// var response = await httpClient.SendAsync(httpRequestMessage);
// string responseResult = await response.Content.ReadAsStringAsync();
// if (response.StatusCode != HttpStatusCode.OK)
// {
// }
// else
// {
// //todo
// }
//}
private static CredentialCache GetCredentialCache(string uri, string username, string password)
{
string authorization = string.Format("{0}:{1}", username, password);
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
return credCache;
}
private static string GetAuthorization(string username, string password)
{
string authorization = string.Format("{}:{1}", username, password);
return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
}
}
}