根据请求获取html
1.请求用get,RestClient 用post异步
2.GB2312导出内容乱码用UTF-8
//参数
Dictionary<string, string> paramDic = new Dictionary<string, string>();
paramDic.Add("Method", paramVm.Method);
byte[] fileByte = HttpHelper.SendRestResponseForByte(api地址 + "/控制器xxx/IndexGet",
paramDic, out string fileType, out string fileName);
return File(fileByte, fileType, fileName);
/// <summary>
/// 获取返回流
/// </summary>
/// <param name="url"></param>
/// <param name="parms"></param>
/// <returns></returns>
public static byte[] SendRestRequestPostForByte(string url, Dictionary<string, string> parms, out string fileType, out string fileName)
{
RestResponse response = CreateRestRequestPostRequest(url, parms, "");
return GetRestRequestByte(response, out fileType, out fileName);
}
/// <summary>
/// 获取结果
/// </summary>
/// <param name="url">地址</param>
/// <param name="parms">参数</param>
/// <param name="contentType"></param>
/// <returns></returns>
private static RestResponse CreateRestRequestPostRequest(string url, Dictionary<string, string> parms, string contentType)
{
RestResponse response = null;
// contentType = "application/x-www-form-urlencoded; charset=gb2312";
try
{
var client = new RestClient(url);
//client.AddDefaultHeader("Content-Type", contentType);
var request = new RestRequest();
foreach (var item in parms)
{
if (!string.IsNullOrWhiteSpace(item.Value))
{
request.AddParameter(item.Key, item.Value);
}
}
response = GetExportResultAsync(client, request).Result;
}
catch (Exception)
{
response = null;
}
return response;
}
/// <summary>
/// 获取导入异步结果
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <returns></returns>
private static async Task<RestResponse> GetExportResultAsync(RestClient client, RestRequest request)
{
return await client.ExecutePostAsync(request);
}
/// <summary>
/// 根据RestResponse得到响应的 Html 代码
/// </summary>
/// <param name="request">HttpWebRequest 对象</param>
/// <returns></returns>
public static byte[] GetRestRequestByte(RestResponse response, out string fileType, out string fileName)
{
byte[] arraryByte = null;
fileType = response.ContentType;
fileName = "";
string refleValue = "";
var header = response.ContentHeaders;
if (response.ContentHeaders?.Count() > 2)
{
int i = 0;
foreach (var item in response.ContentHeaders)
{
if (i == 2)
{
Type t = typeof(HeaderParameter);
PropertyInfo[] propertyInfos = t.GetProperties();
PropertyInfo keyInfo = propertyInfos.Where(i => i.Name == "Value").First();
var value = keyInfo.GetValue(item, null);
refleValue = (string)value;
}
i++;
}
var nameArr = refleValue.ToString().Split(';');
string tempName = nameArr[2];
tempName = tempName.Replace("filename*=UTF-8''", "");
fileName = HttpUtility.UrlDecode(tempName, Encoding.UTF8).Trim();
}
arraryByte = System.Text.Encoding.UTF8.GetBytes(response.Content);
return arraryByte;
}