using Newtonsoft.Json; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using RestSharp; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.IO; using System.Linq; using System.Net; //using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace RuralPower { public class RuralPowerAPI { /// /// Post 登录接口 /// /// 接口域名 /// /// /// /// 反序列化返回的值失败,代表请求接口失败 public string Login(string url, string login_name, string real_name, string password) { var value = RSAHelper.EncryptData(password); var post_data = JsonConvert.SerializeObject(new { login_name = login_name, password = value }); var src = get_page_json(url + "/unity/Login", post_data, ""); return src; } /// /// Post 修改密码接口 /// /// 接口域名 /// token /// 用户id /// 旧密码 /// 新密码 /// 反序列化返回的值失败,代表请求接口失败 public string ChangePassword(string url, string token, string LoginName, string OldPassword, string NewPassword) { OldPassword = RSAHelper.EncryptData(OldPassword); NewPassword = RSAHelper.EncryptData(NewPassword); var post_data = JsonConvert.SerializeObject(new { LoginName = LoginName, OldPassword = OldPassword, NewPassword = NewPassword }); var src = get_page_json(url + "/unity/ChangePassword", post_data, token); return src; } /// /// Post 记录用户登录ip /// /// 接口域名 /// 用户id /// 考试id /// 反序列化返回的值失败,代表请求接口失败 public string LogIP(string url, string token, string UserId, string ExamId, string IP) { var post_data = string.Format("UserId={0}&ExamId={1}&IP={2}", UserId, ExamId, IP); var src = get_page(url + "/unity/LoginLog", post_data, token); return src; } #region 考试 /// /// Get 获取当前时间已发布的考试信息接口 /// /// 接口域名 /// 考生id /// 反序列化返回的值失败,代表请求接口失败 public string GetExam(string url, string token, string UserId, string ExamId) { var post_data = string.Format("UserId={0}&ExamId={1}", UserId, ExamId); var src = get_page(url + "/unity/GetExam", post_data, token); return src; } /// /// Post 开始考试接口 /// /// 接口域名 /// 考试id /// 考生id /// 反序列化返回的值失败,代表请求接口失败 public string StartExam(string url, string token, string ExamId, string UserId) { var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId); var src = get_page(url + "/unity/StartExam", post_data, token); return src; } /// /// Post 结束考试接口 /// /// 接口域名 /// 考试id /// 考生id /// 反序列化返回的值失败,代表请求接口失败 public string EndExam(string url, string token, string ExamId, string UserId) { var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId); var src = get_page(url + "/unity/EndExam", post_data, token); return src; } /// /// 操作票接口 /// /// /// 开始id /// 用户id /// 送电、停电 /// json数组 /// public string WriteTicket(string url, string token, string ExamId, string UserId, string Type, string data) { //var src = get_page_json(url + "/unity/WriteUserOperationTicket?action=writeTicket&ExamId=" + ExamId+ "&UserId="+ UserId+ "&Type="+ Type, data); var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}&data={3}", ExamId, UserId, Type, data); var src = get_page(url + "/unity/WriteUserOperationTicket", post_data, token); return src; } /// /// 查询操作票步骤,用以初始化或断点续传操作票步骤 /// /// /// 开始id /// 用户id /// 送电、停电 /// json数组 /// public string QueryTicketProc(string url, string token, string ExamId, string UserId, string Type) { var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type); var src = get_page(url + "/unity/QueryTicketProc", post_data, token); return src; } /// /// 单步填写操作票步骤接口 /// /// /// 开始id /// 用户id /// 送电、停电 /// json数组 /// public string WriteTicketProc(string url, string token, string ExamId, string UserId, string Type, string OperationTicketId, string Score, string ScoreReason) { //OperationTicketId: 步骤id //UserId :用户id //ExamId:考试id //Type:送电、停电 //Score: 扣分值:0:不扣分 //ScoreReason:扣分原因 var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}&OperationTicketId={3}&Score={4}&ScoreReason={5}" , ExamId, UserId, Type, OperationTicketId, Score, ScoreReason); var src = get_page(url + "/unity/WriteTicketProc", post_data, token); return src; } /// /// 查询操作票步骤,用以初始化或断点续传操作票步骤 /// /// /// 开始id /// 用户id /// 送电、停电 /// public string StopTicketProc(string url, string token, string ExamId, string UserId, string Type) { var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type); var src = get_page(url + "/unity/StopTicketProc", post_data, token); return src; } /// /// Post 巡线、排故工器具接口 /// /// 接口域名 /// 参数 /// 反序列化返回的值失败,代表请求接口失败 public string AddUserTool(string url, string token, string parameter) { var src = get_page_json(url + "/unity/AddUserTool", parameter, token); return src; } /// /// Post 保存考试故障记录接口 /// /// 接口域名 /// 参数 /// 反序列化返回的值失败,代表请求接口失败 public string AddUserFaultRecord(string url, string token, string parameter) { var src = get_page_json(url + "/unity/AddUserFaultRecord", parameter, token); return src; } /// /// Post 上传考试选择题数据接口 /// /// 接口域名 /// 参数 /// 反序列化返回的值失败,代表请求接口失败 public string AddUserChoiceQuestion(string url, string token, string parameter) { var src = get_page_json(url + "/unity/AddUserChoiceQuestion", parameter, token); return src; } /// /// Post 上传故障排故数据接口 /// /// 接口域名 /// 参数 /// 反序列化返回的值失败,代表请求接口失败 public string AddFaultOperation(string url, string token, string parameter) { var src = get_page_json(url + "/unity/AddFaultOperation", parameter, token); return src; } /// /// Post 结束故障排故处理接口 /// /// 接口域名 /// 考试id /// 用户id /// 反序列化返回的值失败,代表请求接口失败 public string EndFaultOperation(string url, string token, string ExamId, string UserId) { var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId); var src = get_page(url + "/unity/EndFaultOperation", post_data, token); return src; } /// /// Post 选择台区上传接口 /// /// 接口域名 /// 考试id /// 考生id /// 选择的台区 /// 反序列化返回的值失败,代表请求接口失败 public string SelectPlatformArea(string url, string token, string ExamId, string UserId, string SelectPlatformArea) { var post_data = string.Format("ExamId={0}&UserId={1}&SelectPlatformArea={2}", ExamId, UserId, SelectPlatformArea); var src = get_page(url + "/unity/SelectPlatformArea", post_data, token); return src; } /// /// Post 更新验电结果接口 /// /// 接口域名 /// 考试id /// 考生id /// 类型 巡线、排故 /// 反序列化返回的值失败,代表请求接口失败 public string UpdateElectricity(string url, string token, string ExamId, string UserId, string Type) { var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type); var src = get_page(url + "/unity/UpdateElectricity", post_data, token); return src; } /// /// Post 更新爬杆结果 /// /// 接口域名 /// 考试id /// 考生id /// 反序列化返回的值失败,代表请求接口失败 public string UpdateClimbrod(string url, string token, string ExamId, string UserId) { var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId); var src = get_page(url + "/unity/UpdateClimbrod", post_data, token); return src; } /// /// Post 更新未分闸状态拉合熔芯扣分接口 /// /// 接口域名 /// 考试id /// 考生id /// 反序列化返回的值失败,代表请求接口失败 public string UpdateFusibleCore(string url, string token, string ExamId, string UserId) { var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId); var src = get_page(url + "/unity/UpdateFusibleCore", post_data, token); return src; } /// /// Post 更新考试环节接口 /// /// 接口域名 /// 考试id /// 考生id /// 选择的台区 /// 反序列化返回的值失败,代表请求接口失败 public string UpdateExaminationLink(string url, string token, string ExamId, string UserId, string ExaminationLink) { var post_data = string.Format("ExamId={0}&UserId={1}&ExaminationLink={2}", ExamId, UserId, ExaminationLink); var src = get_page(url + "/unity/UpdateExaminationLink", post_data, token); return src; } /// /// Post 更新围栏接口 /// /// 接口域名 /// 考试id /// 考生id /// 反序列化返回的值失败,代表请求接口失败 public string UpdateEnclosure(string url, string token, string ExamId, string UserId) { var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId); var src = get_page(url + "/unity/UpdateEnclosure", post_data, token); return src; } /// /// Post 获取考试状态接口 /// /// 接口域名 /// 考试id /// 反序列化返回的值失败,代表请求接口失败 public string GetExamStatus(string url, string token, string ExamId) { var post_data = string.Format("ExamId={0}", ExamId); var src = get_page(url + "/unity/GetExamStatus", post_data, token); return src; } /// /// 上传视频录屏文件 /// /// 接口域名 /// 考试id /// 考生id /// 视频描述 /// 视频路径 /// public string UploadFile(string url, string token, string ExamId, string UserId, string FileDesc, string FilePath) { try { //using (var httpClient = new HttpClient()) //{ // using (var request = new HttpRequestMessage(new HttpMethod("Post"), url + "/unity/UploadFile")) // { // request.Headers.TryAddWithoutValidation("User-Agent", "Apipost client Runtime/+https://www.apipost.cn/"); // request.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded"); // var multipartContent = new MultipartFormDataContent(); // multipartContent.Add(new StringContent("ExamId"), ExamId); // multipartContent.Add(new StringContent("UserId"), UserId); // multipartContent.Add(new StringContent("FileDesc"), FileDesc); // multipartContent.Add(new StringContent("Files"), FilePath); // request.Content = multipartContent; // var task = httpClient.SendAsync(request); // task.Wait(); // HttpResponseMessage response = task.Result; // var result = response.Content.ReadAsStringAsync(); // string responseBodyAsText = result.Result; // return responseBodyAsText; // } //} //var mfdc = new System.Net.Http.MultipartFormDataContent(); //mfdc.Headers.Add("ContentType", "multipart/form-data");//声明头部 //mfdc.Add(new System.Net.Http.StringContent("ExamId"), ExamId);//参数, 内容在前,参数名称在后 //mfdc.Add(new System.Net.Http.StringContent("UserId"), UserId); //mfdc.Add(new System.Net.Http.StringContent("FileDesc"), FileDesc); //mfdc.Add(new System.Net.Http.StringContent("Files"), FilePath); //var clientTask = new System.Net.Http.HttpClient().PostAsync(url + "/unity/UploadFile", mfdc);//发起异步请求 //clientTask.Wait();//等待请求结果 //if (clientTask.Result.IsSuccessStatusCode) //{ // //请求正常 // var resultTask = clientTask.Result.Content.ReadAsStringAsync();//异步读取返回内容 // resultTask.Wait();//等读取返回内容 // var resultStr = resultTask.Result;//返回内容字符串 // return resultStr; //} //else //{ // //请求异常 // return "请求接口出错"; //} var client = new RestClient(url + "/unity/UploadFile"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddFile("Files", FilePath); request.AddParameter("ExamId", ExamId); request.AddParameter("UserId", UserId); request.AddParameter("FileDesc", FileDesc); IRestResponse response = client.Execute(request); var result = response.Content; if (!string.IsNullOrEmpty(result)) { if (result.Contains("\ufeff")) { result = result.Substring(1); } } return result; } catch (Exception ex) { return ""; } } /// /// Post 更新考试时长接口 /// /// 接口域名 /// 用户id /// 考试id /// 剩余考试时长 /// 反序列化返回的值失败,代表请求接口失败 public string UpdateExaminationDuration(string url, string token, string UserId, string ExamId, string ExaminationDuration) { var post_data = string.Format("UserId={0}&ExamId={1}&ExaminationDuration={2}", UserId, ExamId, ExaminationDuration); var src = get_page(url + "/unity/UpdateExaminationDuration", post_data, token); return src; } /// /// Post 更新场景设备状态接口 /// /// 接口域名 /// 用户id /// 考试id /// 剩余考试时长 /// 反序列化返回的值失败,代表请求接口失败 public string UpdateRestoreSceneMsg(string url, string token, string UserId, string ExamId, string RestoreSceneMsg) { var post_data = string.Format("UserId={0}&ExamId={1}&RestoreSceneMsg={2}", UserId, ExamId, RestoreSceneMsg); var src = get_page(url + "/unity/UpdateRestoreSceneMsg", post_data, token); return src; } /// /// Post 获取并更新考生考试时间 /// /// 接口域名 /// 用户id /// 考试id /// 1 读取, 0 更新 /// 反序列化返回的值失败,代表请求接口失败 public string UpdateUserExamTime(string url, string token, string UserId, string ExamId, string Read) { var post_data = string.Format("UserId={0}&ExamId={1}&Read={2}", UserId, ExamId, Read); var src = get_page(url + "/unity/UpdateUserExamTime", post_data, token); return src; } #endregion #region 实训 /// /// Get 获取我的实训列表接口 /// /// 接口域名 /// 考生id /// 页码 /// 每页条数 /// 反序列化返回的值失败,代表请求接口失败 public string GetTrainList(string url, string token, string UserId, string PageIndex, string PageSize) { var post_data = string.Format("UserId={0}&PageIndex={1}&PageSize={2}", UserId, PageIndex, PageSize); var src = get_page(url + "/unity/GetTrainList", post_data, token); return src; } #endregion /// /// POST json转excel接口 /// /// 接口路径 /// 请求参数 json字符串 /// public byte[] JsonTurnExcel(string url, string parameter) { var model = new Api.json_turn_excel_request(); if (!string.IsNullOrEmpty(parameter)) { model = JsonConvert.DeserializeObject(parameter); } HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("考试试卷"); var row1 = sheet1.CreateRow(0);//选择第1行 var cell1_1 = row1.CreateCell(0);//选择第1列 cell1_1.SetCellValue("考试名称"); var cell1_2 = row1.CreateCell(1); cell1_2.SetCellValue("考试时长"); var cell1_3 = row1.CreateCell(2); cell1_3.SetCellValue("开票日期"); var cell1_4 = row1.CreateCell(3); cell1_4.SetCellValue("村组"); var cell1_5 = row1.CreateCell(4); cell1_5.SetCellValue("台区"); var cell1_6 = row1.CreateCell(5); cell1_6.SetCellValue("线路"); #region 设置列 IRow rowH = sheet1.CreateRow(1); IDataFormat dataformat = workbook.CreateDataFormat(); ICellStyle cellstytle = workbook.CreateCellStyle(); cellstytle.DataFormat = dataformat.GetFormat("@"); for (int i = 0; i < 1000; i++) { if (i == 0) { sheet1.GetRow(0).GetCell(2).CellStyle = cellstytle; } else { var row = sheet1.CreateRow(i); var cell = row.CreateCell(2); cell.CellStyle = cellstytle; } } #endregion ISheet sheet2 = workbook.CreateSheet("考试工具"); var row2 = sheet2.CreateRow(0);//选择第1行 var cell2_1 = row2.CreateCell(0);//选择第1列 cell2_1.SetCellValue("工具名称"); var cell2_2 = row2.CreateCell(1); cell2_2.SetCellValue("类型(工具、材料、着装)"); var cell2_3 = row2.CreateCell(2); cell2_3.SetCellValue("用途(巡检、排故)"); ISheet sheet3 = workbook.CreateSheet("考试故障"); var row3 = sheet3.CreateRow(0);//选择第1行 var cell3_1 = row3.CreateCell(0); cell3_1.SetCellValue("设备类型(杆塔、线档、配电箱)"); var cell3_2 = row3.CreateCell(1); cell3_2.SetCellValue("线路"); var cell3_3 = row3.CreateCell(2); cell3_3.SetCellValue("位置"); var cell3_4 = row3.CreateCell(3); cell3_4.SetCellValue("缺陷类型"); var cell3_5 = row3.CreateCell(4); cell3_5.SetCellValue("相位"); var cell3_6 = row3.CreateCell(5); cell3_6.SetCellValue("缺陷类别"); ISheet sheet4 = workbook.CreateSheet("考试选择题"); var row4 = sheet4.CreateRow(0);//选择第1行 var cell4_1 = row4.CreateCell(0);//选择第1列 cell4_1.SetCellValue("题干"); var cell4_2 = row4.CreateCell(1); cell4_2.SetCellValue("选项A"); var cell4_3 = row4.CreateCell(2); cell4_3.SetCellValue("选项B"); var cell4_4 = row4.CreateCell(3); cell4_4.SetCellValue("选项C"); var cell4_5 = row4.CreateCell(4); cell4_5.SetCellValue("选项D"); var cell4_6 = row4.CreateCell(5); cell4_6.SetCellValue("正确答案"); ISheet sheet5 = workbook.CreateSheet("考试操作票选项"); var row5 = sheet5.CreateRow(0);//选择第1行 var cell5_1 = row5.CreateCell(0);//选择第1列 cell5_1.SetCellValue("类型(送电、停电)"); var cell5_2 = row5.CreateCell(1); cell5_2.SetCellValue("序号"); var cell5_3 = row5.CreateCell(2); cell5_3.SetCellValue("内容"); if (model != null) { if (model.Exam != null) { var row = sheet1.CreateRow(1);//选择第1行 var cell1 = row.CreateCell(0); cell1.SetCellValue(model.Exam.ExamName); var cell2 = row.CreateCell(1); cell2.SetCellValue(model.Exam.ExamDuration); var cell3 = row.CreateCell(2); cell3.SetCellValue(model.Exam.BillingDate); cell3.CellStyle = cellstytle; var cell4 = row.CreateCell(3); cell4.SetCellValue(model.Exam.VillageGroup); var cell5 = row.CreateCell(4); cell5.SetCellValue(model.Exam.PlatformArea); var cell6 = row.CreateCell(5); cell6.SetCellValue(model.Exam.Line); } if (model.ToolList != null) { if (model.ToolList.Count > 0) { for (int i = 0; i < model.ToolList.Count; i++) { var row = sheet2.CreateRow(i);//选择第1行 var cell1 = row.CreateCell(0); cell1.SetCellValue(model.ToolList[i].ToolName); var cell2 = row.CreateCell(1); cell2.SetCellValue(model.ToolList[i].ToolType); var cell3 = row.CreateCell(2); cell3.SetCellValue(model.ToolList[i].Purpose); } } } if (model.FaultList != null) { if (model.FaultList.Count > 0) { for (int i = 0; i < model.FaultList.Count; i++) { var row = sheet3.CreateRow(i);//选择第1行 var cell1 = row.CreateCell(0); cell1.SetCellValue(model.FaultList[i].DeviceType); var cell2 = row.CreateCell(1); cell2.SetCellValue(model.FaultList[i].Line); var cell3 = row.CreateCell(2); cell3.SetCellValue(model.FaultList[i].Position); var cell4 = row.CreateCell(3); cell4.SetCellValue(model.FaultList[i].DefectType); var cell5 = row.CreateCell(4); cell5.SetCellValue(model.FaultList[i].Phase); var cell6 = row.CreateCell(5); cell6.SetCellValue(model.FaultList[i].DefectCategory); } } } if (model.ChoiceQuestionList != null) { if (model.ChoiceQuestionList.Count > 0) { for (int i = 0; i < model.ChoiceQuestionList.Count; i++) { var row = sheet4.CreateRow(i);//选择第1行 var cell1 = row.CreateCell(0); cell1.SetCellValue(model.ChoiceQuestionList[i].Topic); var cell2 = row.CreateCell(1); cell2.SetCellValue(model.ChoiceQuestionList[i].OptionA); var cell3 = row.CreateCell(2); cell3.SetCellValue(model.ChoiceQuestionList[i].OptionB); var cell4 = row.CreateCell(3); cell4.SetCellValue(model.ChoiceQuestionList[i].OptionC); var cell5 = row.CreateCell(4); cell5.SetCellValue(model.ChoiceQuestionList[i].OptionD); var cell6 = row.CreateCell(5); cell6.SetCellValue(model.ChoiceQuestionList[i].RightKey); } } } if (model.OperationTicketList != null) { if (model.OperationTicketList.Count > 0) { for (int i = 0; i < model.OperationTicketList.Count; i++) { var row = sheet5.CreateRow(i);//选择第1行 var cell1 = row.CreateCell(0); cell1.SetCellValue(model.OperationTicketList[i].Type); var cell2 = row.CreateCell(1); cell2.SetCellValue(model.OperationTicketList[i].SerialNumber); var cell3 = row.CreateCell(2); cell3.SetCellValue(model.OperationTicketList[i].Content); } } } } //保存Workbook方式二: 保存到内存流中 var stream = new MemoryStream(); workbook.Write(stream); stream.Flush(); stream.Position = 0; sheet1 = null; sheet2 = null; sheet3 = null; sheet4 = null; sheet5 = null; workbook = null; //byte[] data; //try //{ // // 发起POST请求,超时时间15秒,返回响应字节数组 // var api_result = get_page_json(url + "/unity/JsonTurnExcel", parameter); // data = System.Text.Encoding.Default.GetBytes(api_result); //} //catch (Exception) //{ // return null; //} return stream.ToArray(); } /// /// Get请求 /// /// 请求地址 /// public static string get_page(string post_url, string token) { Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.UTF8; // 准备请求... try { // 设置参数 request = WebRequest.Create(post_url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Headers.Add("Authorization", "Bearer " + token); //默认值TimeOut:100 秒 //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = sr.ReadToEnd(); string err = string.Empty; return content; } catch (Exception ex) { return ex.Message; } } /// /// form-data post请求(请求时带cookie值) /// /// 请求地址 /// 请求参数 /// public static string get_page(string post_url, string post_data, string token) { Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.UTF8; byte[] data = encoding.GetBytes(post_data); // 准备请求... try { // 设置参数 request = WebRequest.Create(post_url) as HttpWebRequest; request.AllowAutoRedirect = true; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; request.Headers.Add("Authorization", "Bearer " + token); outstream = request.GetRequestStream(); outstream.Write(data, 0, data.Length); outstream.Close(); //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = sr.ReadToEnd(); string err = string.Empty; return content; } catch (Exception ex) { string err = ex.Message; return err; } } public static string get_page_json(string post_url, string post_data, string token) { Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.UTF8; byte[] data = encoding.GetBytes(post_data); // 准备请求... try { // 设置参数 request = WebRequest.Create(post_url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; request.ContentType = "application/json"; request.Headers.Add("Authorization", "Bearer " + token); request.ContentLength = data.Length; request.Timeout = 6000; outstream = request.GetRequestStream(); outstream.Write(data, 0, data.Length); outstream.Close(); //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 //instream = response.GetResponseStream(); string message = ""; using (var responseStream = response.GetResponseStream()) using (var mstream = new MemoryStream()) { responseStream.CopyTo(mstream); message = Encoding.UTF8.GetString(mstream.ToArray()); } //sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = message; string err = string.Empty; return content; } catch (Exception ex) { string err = ex.Message; return err; } } } }