diff --git a/App_Code/HttpHelper.cs b/App_Code/HttpHelper.cs
new file mode 100644
index 0000000..f486382
--- /dev/null
+++ b/App_Code/HttpHelper.cs
@@ -0,0 +1,840 @@
+using System;
+using System.IO;
+using System.IO.Compression;
+using System.Linq;
+using System.Net;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Text.RegularExpressions;
+
+
+///
+/// Http连接操作帮助类
+///
+public class HttpHelper
+{
+ static HttpHelper()
+ {
+ Default = new HttpHelper();
+ }
+ ///
+ /// 默认对象
+ ///
+ public static HttpHelper Default { get; private set; }
+ #region 预定义方变量
+ //默认的编码
+ private Encoding encoding = Encoding.Default;
+ //Post数据编码
+ private Encoding postencoding = Encoding.Default;
+ //HttpWebRequest对象用来发起请求
+ private HttpWebRequest request = null;
+ //获取影响流的数据对象
+ private HttpWebResponse response = null;
+ //设置本地的出口ip和端口
+ private IPEndPoint _IPEndPoint = null;
+ #endregion
+
+ #region Public
+ ///
+ /// 根据相传入的数据,得到相应页面数据
+ ///
+ /// 参数类对象
+ /// 返回HttpResult类型
+ public HttpResult GetHtml(HttpItem item)
+ {
+ //返回参数
+ HttpResult result = new HttpResult();
+ try
+ {
+ //准备参数
+ SetRequest(item);
+ }
+ catch (Exception ex)
+ {
+ //配置参数时出错
+ return new HttpResult() { Cookie = string.Empty, Header = null, Html = ex.Message, StatusDescription = "配置参数时出错:" + ex.Message };
+ }
+ try
+ {
+ //请求数据
+ using (response = (HttpWebResponse)request.GetResponse())
+ {
+ GetData(item, result);
+ }
+ }
+ catch (WebException ex)
+ {
+ if (ex.Response != null)
+ {
+ using (response = (HttpWebResponse)ex.Response)
+ {
+ GetData(item, result);
+ }
+ }
+ else
+ {
+ result.Html = ex.Message;
+ }
+ }
+ catch (Exception ex)
+ {
+ result.Html = ex.Message;
+ }
+ if (item.IsToLower) result.Html = result.Html.ToLower();
+ //重置request,response为空
+ if (item.IsReset)
+ {
+ request = null;
+ response = null;
+ }
+ return result;
+ }
+ ///
+ /// 快捷GET请求
+ ///
+ ///
+ ///
+ public HttpResult Get(string url)
+ {
+ return GetHtml(new HttpItem { URL = url, Method = "GET" });
+ }
+ ///
+ /// 快捷POST请求
+ ///
+ ///
+ ///
+ ///
+ public HttpResult Post(string url, string data)
+ {
+ return GetHtml(new HttpItem { URL = url, Postdata = data, Method = "POST" });
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public HttpResult Post(string url, byte[] data)
+ {
+ return GetHtml(new HttpItem { URL = url, PostdataByte = data, Method = "POST" });
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public HttpResult Put(string url, string data)
+ {
+ return GetHtml(new HttpItem { URL = url, Postdata = data, Method = "PUT" });
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public HttpResult Put(string url, byte[] data)
+ {
+ return GetHtml(new HttpItem { URL = url, PostdataByte = data, Method = "PUT" });
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ public HttpResult Delete(string url)
+ {
+ return GetHtml(new HttpItem { URL = url, Method = "DELETE" });
+ }
+ #endregion
+
+ #region GetData
+ ///
+ /// 获取数据的并解析的方法
+ ///
+ ///
+ ///
+ private void GetData(HttpItem item, HttpResult result)
+ {
+ if (response == null)
+ {
+ return;
+ }
+ #region base
+ //获取StatusCode
+ result.StatusCode = response.StatusCode;
+ //获取StatusDescription
+ result.StatusDescription = response.StatusDescription;
+ //获取Headers
+ result.Header = response.Headers;
+ //获取最后访问的URl
+ result.ResponseUri = response.ResponseUri.ToString();
+ //获取CookieCollection
+ if (response.Cookies != null) result.CookieCollection = response.Cookies;
+ //获取set-cookie
+ if (response.Headers["set-cookie"] != null) result.Cookie = response.Headers["set-cookie"];
+ #endregion
+ #region byte
+ //处理网页Byte
+ byte[] ResponseByte = GetByte();
+ #endregion
+ #region Html
+ if (ResponseByte != null && ResponseByte.Length > 0)
+ {
+ //设置编码
+ SetEncoding(item, result, ResponseByte);
+ //得到返回的HTML
+ result.Html = encoding.GetString(ResponseByte);
+ }
+ else
+ {
+ //没有返回任何Html代码
+ result.Html = string.Empty;
+ }
+ #endregion
+ }
+ ///
+ /// 设置编码
+ ///
+ /// HttpItem
+ /// HttpResult
+ /// byte[]
+ private void SetEncoding(HttpItem item, HttpResult result, byte[] ResponseByte)
+ {
+ //是否返回Byte类型数据
+ if (item.ResultType == ResultType.Byte) result.ResultByte = ResponseByte;
+ //从这里开始我们要无视编码了
+ if (encoding == null)
+ {
+ Match meta = Regex.Match(Encoding.Default.GetString(ResponseByte), " 0)
+ {
+ c = meta.Groups[1].Value.ToLower().Trim();
+ }
+ if (c.Length > 2)
+ {
+ try
+ {
+ encoding = Encoding.GetEncoding(c.Replace("\"", string.Empty).Replace("'", "").Replace(";", "").Replace("iso-8859-1", "gbk").Trim());
+ }
+ catch
+ {
+ if (string.IsNullOrEmpty(response.CharacterSet))
+ {
+ encoding = Encoding.UTF8;
+ }
+ else
+ {
+ encoding = Encoding.GetEncoding(response.CharacterSet);
+ }
+ }
+ }
+ else
+ {
+ if (string.IsNullOrEmpty(response.CharacterSet))
+ {
+ encoding = Encoding.UTF8;
+ }
+ else
+ {
+ encoding = Encoding.GetEncoding(response.CharacterSet);
+ }
+ }
+ }
+ }
+ ///
+ /// 提取网页Byte
+ ///
+ ///
+ private byte[] GetByte()
+ {
+ byte[] ResponseByte = null;
+ using (MemoryStream _stream = new MemoryStream())
+ {
+ //GZIIP处理
+ if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
+ {
+ //开始读取流并设置编码方式
+ new GZipStream(response.GetResponseStream(), CompressionMode.Decompress).CopyTo(_stream, 10240);
+ }
+ else
+ {
+ //开始读取流并设置编码方式
+ response.GetResponseStream().CopyTo(_stream, 10240);
+ }
+ //获取Byte
+ ResponseByte = _stream.ToArray();
+ }
+ return ResponseByte;
+ }
+ #endregion
+ #region SetRequest
+ ///
+ /// 为请求准备参数
+ ///
+ ///参数列表
+ private void SetRequest(HttpItem item)
+ {
+ // 验证证书
+ SetCer(item);
+ if (item.IPEndPoint != null)
+ {
+ _IPEndPoint = item.IPEndPoint;
+ //设置本地的出口ip和端口
+ request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
+ }
+ //设置Header参数
+ if (item.Header != null && item.Header.Count > 0) foreach (string key in item.Header.AllKeys)
+ {
+ request.Headers.Add(key, item.Header[key]);
+ }
+ // 设置代理
+ SetProxy(item);
+ if (item.ProtocolVersion != null) request.ProtocolVersion = item.ProtocolVersion;
+ request.ServicePoint.Expect100Continue = item.Expect100Continue;
+ //请求方式Get或者Post
+ request.Method = item.Method;
+ request.Timeout = item.Timeout;
+ request.KeepAlive = item.KeepAlive;
+ request.ReadWriteTimeout = item.ReadWriteTimeout;
+ if (!string.IsNullOrWhiteSpace(item.Host))
+ {
+ request.Host = item.Host;
+ }
+ if (item.IfModifiedSince != null) request.IfModifiedSince = Convert.ToDateTime(item.IfModifiedSince);
+ //Accept
+ request.Accept = item.Accept;
+ //ContentType返回类型
+ request.ContentType = item.ContentType;
+ //UserAgent客户端的访问类型,包括浏览器版本和操作系统信息
+ request.UserAgent = item.UserAgent;
+ // 编码
+ encoding = item.Encoding;
+ //设置安全凭证
+ request.Credentials = item.ICredentials;
+ //设置Cookie
+ SetCookie(item);
+ //来源地址
+ request.Referer = item.Referer;
+ //是否执行跳转功能
+ request.AllowAutoRedirect = item.Allowautoredirect;
+ if (item.MaximumAutomaticRedirections > 0)
+ {
+ request.MaximumAutomaticRedirections = item.MaximumAutomaticRedirections;
+ }
+ //设置Post数据
+ SetPostData(item);
+ //设置最大连接
+ if (item.Connectionlimit > 0) request.ServicePoint.ConnectionLimit = item.Connectionlimit;
+ }
+ ///
+ /// 设置证书
+ ///
+ ///
+ private void SetCer(HttpItem item)
+ {
+ if (!string.IsNullOrWhiteSpace(item.CerPath))
+ {
+ //这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。
+ ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
+ //初始化对像,并设置请求的URL地址
+ request = (HttpWebRequest)WebRequest.Create(item.URL);
+ SetCerList(item);
+ //将证书添加到请求里
+ request.ClientCertificates.Add(new X509Certificate(item.CerPath));
+ }
+ else
+ {
+ //初始化对像,并设置请求的URL地址
+ request = (HttpWebRequest)WebRequest.Create(item.URL);
+ SetCerList(item);
+ }
+ }
+ ///
+ /// 设置多个证书
+ ///
+ ///
+ private void SetCerList(HttpItem item)
+ {
+ if (item.ClentCertificates != null && item.ClentCertificates.Count > 0)
+ {
+ foreach (X509Certificate c in item.ClentCertificates)
+ {
+ request.ClientCertificates.Add(c);
+ }
+ }
+ }
+ ///
+ /// 设置Cookie
+ ///
+ /// Http参数
+ private void SetCookie(HttpItem item)
+ {
+ if (!string.IsNullOrEmpty(item.Cookie)) request.Headers[HttpRequestHeader.Cookie] = item.Cookie;
+ //设置CookieCollection
+ if (item.ResultCookieType == ResultCookieType.CookieCollection)
+ {
+ request.CookieContainer = new CookieContainer();
+ if (item.CookieCollection != null && item.CookieCollection.Count > 0)
+ request.CookieContainer.Add(item.CookieCollection);
+ }
+ }
+ ///
+ /// 设置Post数据
+ ///
+ /// Http参数
+ private void SetPostData(HttpItem item)
+ {
+ //验证在得到结果时是否有传入数据
+ if (!request.Method.Trim().ToLower().Contains("get") && !request.Method.Trim().ToLower().Contains("delete") && !request.Method.Trim().ToLower().Contains("head"))
+ {
+ if (item.PostEncoding != null)
+ {
+ postencoding = item.PostEncoding;
+ }
+ byte[] buffer = null;
+ //写入Byte类型
+ if (item.PostDataType == PostDataType.Byte && item.PostdataByte != null && item.PostdataByte.Length > 0)
+ {
+ //验证在得到结果时是否有传入数据
+ buffer = item.PostdataByte;
+ }//写入文件
+ else if (item.PostDataType == PostDataType.FilePath && !string.IsNullOrWhiteSpace(item.Postdata))
+ {
+ StreamReader r = new StreamReader(item.Postdata, postencoding);
+ buffer = postencoding.GetBytes(r.ReadToEnd());
+ r.Close();
+ } //写入字符串
+ else if (!string.IsNullOrWhiteSpace(item.Postdata))
+ {
+ buffer = postencoding.GetBytes(item.Postdata);
+ }
+ if (buffer != null)
+ {
+ request.ContentLength = buffer.Length;
+ request.GetRequestStream().Write(buffer, 0, buffer.Length);
+ }
+ else
+ {
+ request.ContentLength = 0;
+ }
+ }
+ }
+ ///
+ /// 设置代理
+ ///
+ /// 参数对象
+ private void SetProxy(HttpItem item)
+ {
+ bool isIeProxy = false;
+ if (!string.IsNullOrWhiteSpace(item.ProxyIp))
+ {
+ isIeProxy = item.ProxyIp.ToLower().Contains("ieproxy");
+ }
+ if (!string.IsNullOrWhiteSpace(item.ProxyIp) && !isIeProxy)
+ {
+ //设置代理服务器
+ if (item.ProxyIp.Contains(":"))
+ {
+ string[] plist = item.ProxyIp.Split(':');
+ WebProxy myProxy = new WebProxy(plist[0].Trim(), Convert.ToInt32(plist[1].Trim()))
+ {
+ //建议连接
+ Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd)
+ };
+ //给当前请求对象
+ request.Proxy = myProxy;
+ }
+ else
+ {
+ WebProxy myProxy = new WebProxy(item.ProxyIp, false)
+ {
+ //建议连接
+ Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd)
+ };
+ //给当前请求对象
+ request.Proxy = myProxy;
+ }
+ }
+ else if (isIeProxy)
+ {
+ //设置为IE代理
+ }
+ else
+ {
+ request.Proxy = item.WebProxy;
+ }
+ }
+ #endregion
+ #region private main
+ ///
+ /// 回调验证证书问题
+ ///
+ /// 流对象
+ /// 证书
+ /// X509Chain
+ /// SslPolicyErrors
+ /// bool
+ private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; }
+ ///
+ /// 通过设置这个属性,可以在发出连接的时候绑定客户端发出连接所使用的IP地址。
+ ///
+ ///
+ ///
+ ///
+ ///
+ private IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
+ {
+ return _IPEndPoint;//端口号
+ }
+ #endregion
+}
+#region public calss
+///
+/// Http请求参考类
+///
+public class HttpItem
+{
+ ///
+ /// 请求URL必须填写
+ ///
+ public string URL { get; set; }
+ ///
+ /// 请求方式默认为GET方式,当为POST方式时必须设置Postdata的值
+ ///
+ public string Method { get; set; }
+ ///
+ /// 默认请求超时时间
+ ///
+ public int Timeout
+ {
+ get
+ {
+ return 10000;
+ }
+ }
+ ///
+ /// 默认写入Post数据超时间
+ ///
+ public int ReadWriteTimeout
+ {
+ get
+ {
+ return 30000;
+ }
+ }
+ ///
+ /// 设置Host的标头信息
+ ///
+ public string Host { get; set; }
+ ///
+ /// 获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接默认为true。
+ ///
+ public bool KeepAlive
+ {
+ get
+ {
+ return true;
+ }
+ }
+ ///
+ /// 请求标头值 默认为text/html, application/xhtml+xml, */*
+ ///
+ public string Accept
+ {
+ get
+ {
+ return "application/json";
+ }
+ }
+ ///
+ /// 请求返回类型默认 text/html
+ ///
+ public string ContentType
+ {
+ get; set;
+ }
+ ///
+ /// 客户端访问信息默认Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
+ ///
+ public string UserAgent
+ {
+ get
+ {
+ return "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
+ }
+ }
+ ///
+ /// 返回数据编码默认为NUll,可以自动识别,一般为utf-8,gbk,gb2312
+ ///
+ public Encoding Encoding { get; set; }
+ ///
+ /// Post的数据类型
+ ///
+ public PostDataType PostDataType
+ {
+ get
+ {
+ return PostDataType.String;
+ }
+ }
+ ///
+ /// Post请求时要发送的字符串Post数据
+ ///
+ public string Postdata { get; set; }
+ ///
+ /// Post请求时要发送的Byte类型的Post数据
+ ///
+ public byte[] PostdataByte { get; set; }
+ ///
+ /// Cookie对象集合
+ ///
+ public CookieCollection CookieCollection { get; set; }
+ ///
+ /// 请求时的Cookie
+ ///
+ public string Cookie { get; set; }
+ ///
+ /// 来源地址,上次访问地址
+ ///
+ public string Referer { get; set; }
+ ///
+ /// 证书绝对路径
+ ///
+ public string CerPath { get; set; }
+ ///
+ /// 设置代理对象,不想使用IE默认配置就设置为Null,而且不要设置ProxyIp
+ ///
+ public WebProxy WebProxy { get; set; }
+ ///
+ /// 是否设置为全文小写,默认为不转化
+ ///
+ public bool IsToLower { get; set; }
+ ///
+ /// 支持跳转页面,查询结果将是跳转后的页面,默认是不跳转
+ ///
+ public bool Allowautoredirect { get; set; }
+ ///
+ /// 最大连接数
+ ///
+ public int Connectionlimit
+ {
+ get
+ {
+ return 1024;
+ }
+ }
+ ///
+ /// 代理Proxy 服务器用户名
+ ///
+ public string ProxyUserName { get; set; }
+ ///
+ /// 代理 服务器密码
+ ///
+ public string ProxyPwd { get; set; }
+ ///
+ /// 代理 服务IP,如果要使用IE代理就设置为ieproxy
+ ///
+ public string ProxyIp { get; set; }
+ ///
+ /// 设置返回类型String和Byte
+ ///
+ public ResultType ResultType
+ {
+ get
+ {
+ return ResultType.String;
+ }
+ }
+ ///
+ /// header对象
+ ///
+ private WebHeaderCollection header = new WebHeaderCollection();
+ public WebHeaderCollection Header
+ {
+ get
+ {
+ return header;
+ }
+ set
+ {
+ header = value;
+ }
+ }
+ ///
+ /// 获取或设置用于请求的 HTTP 版本。返回结果:用于请求的 HTTP 版本。默认为 System.Net.HttpVersion.Version11。
+ ///
+ public Version ProtocolVersion { get; set; }
+ ///
+ /// 获取或设置一个 System.Boolean 值,该值确定是否使用 100-Continue 行为。如果 POST 请求需要 100-Continue 响应,则为 true;否则为 false。默认值为 true。
+ ///
+ public bool Expect100Continue { get; set; }
+ ///
+ /// 设置509证书集合
+ ///
+ public X509CertificateCollection ClentCertificates { get; set; }
+ ///
+ /// 设置或获取Post参数编码,默认的为Default编码
+ ///
+ public Encoding PostEncoding { get; set; }
+ ///
+ /// Cookie返回类型,默认的是只返回字符串类型
+ ///
+ public ResultCookieType ResultCookieType
+ {
+ get
+ {
+ return ResultCookieType.String;
+ }
+ }
+ ///
+ /// 获取或设置请求的身份验证信息。
+ ///
+ public ICredentials ICredentials
+ {
+ get
+ {
+ return CredentialCache.DefaultCredentials;
+ }
+ }
+ ///
+ /// 设置请求将跟随的重定向的最大数目
+ ///
+ public int MaximumAutomaticRedirections { get; set; }
+ ///
+ /// 获取和设置IfModifiedSince,默认为当前日期和时间
+ ///
+ public DateTime? IfModifiedSince { get; set; }
+ #region ip-port
+ ///
+ /// 设置本地的出口ip和端口
+ /// ]
+ ///
+ ///item.IPEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1"),80);
+ ///
+ public IPEndPoint IPEndPoint { get; set; }
+ #endregion
+ ///
+ /// 是否重置request,response的值,默认不重置,当设置为True时request,response将被设置为Null
+ ///
+ public bool IsReset { get; set; }
+}
+///
+/// Http返回参数类
+///
+public class HttpResult
+{
+ ///
+ /// Http请求返回的Cookie
+ ///
+ public string Cookie { get; set; }
+ ///
+ /// Cookie对象集合
+ ///
+ public CookieCollection CookieCollection { get; set; }
+ ///
+ /// 返回的String类型数据 只有ResultType.String时才返回数据,其它情况为空
+ ///
+ public string Html { get; set; }
+ ///
+ /// 返回的Byte数组 只有ResultType.Byte时才返回数据,其它情况为空
+ ///
+ public byte[] ResultByte { get; set; }
+ ///
+ /// header对象
+ ///
+ public WebHeaderCollection Header { get; set; }
+ ///
+ /// 返回状态说明
+ ///
+ public string StatusDescription { get; set; }
+ ///
+ /// 返回状态码,默认为OK
+ ///
+ public HttpStatusCode StatusCode { get; set; }
+ ///
+ /// 最后访问的URl
+ ///
+ public string ResponseUri { get; set; }
+ ///
+ /// 获取重定向的URl
+ ///
+ public string RedirectUrl
+ {
+ get
+ {
+ try
+ {
+ if (Header != null && Header.Count > 0)
+ {
+ if (Header.AllKeys.Any(k => k.ToLower().Contains("location")))
+ {
+ string baseurl = Header["location"].ToString().Trim();
+ string locationurl = baseurl.ToLower();
+ if (!string.IsNullOrWhiteSpace(locationurl))
+ {
+ bool b = locationurl.StartsWith("http://") || locationurl.StartsWith("https://");
+ if (!b)
+ {
+ baseurl = new Uri(new Uri(ResponseUri), baseurl).AbsoluteUri;
+ }
+ }
+ return baseurl;
+ }
+ }
+ }
+ catch { }
+ return string.Empty;
+ }
+ }
+}
+///
+/// 返回类型
+///
+public enum ResultType
+{
+ ///
+ /// 表示只返回字符串 只有Html有数据
+ ///
+ String,
+ ///
+ /// 表示返回字符串和字节流 ResultByte和Html都有数据返回
+ ///
+ Byte
+}
+///
+/// Post的数据格式默认为string
+///
+public enum PostDataType
+{
+ ///
+ /// 字符串类型,这时编码Encoding可不设置
+ ///
+ String,
+ ///
+ /// Byte类型,需要设置PostdataByte参数的值编码Encoding可设置为空
+ ///
+ Byte,
+ ///
+ /// 传文件,Postdata必须设置为文件的绝对路径,必须设置Encoding的值
+ ///
+ FilePath
+}
+///
+/// Cookie返回类型
+///
+public enum ResultCookieType
+{
+ ///
+ /// 只返回字符串类型的Cookie
+ ///
+ String,
+ ///
+ /// CookieCollection格式的Cookie集合同时也返回String类型的cookie
+ ///
+ CookieCollection
+}
+#endregion
diff --git a/Temp/SplitQuestion.aspx.cs b/Temp/SplitQuestion.aspx.cs
index 5e97a3b..ad2fe50 100644
--- a/Temp/SplitQuestion.aspx.cs
+++ b/Temp/SplitQuestion.aspx.cs
@@ -1,24 +1,12 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-using Lucee.WebBase.Data;
+using Lucee.WebBase.Data;
using Lucee.WebBase.Utils;
-using System.Data;
-using System.Data.SqlClient;
-using ZXing.Client.Result;
using MySql.Data.MySqlClient;
-using System.IO;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
using System.Net;
using System.Text;
-using Newtonsoft;
-using Newtonsoft.Json.Converters;
-using Newtonsoft.Json;
-using Emgu.CV.UI.GLView;
-using System.Net.Http;
-using System.Net.Http.Json;
public partial class Temp_SplitQuestion : System.Web.UI.Page
{
@@ -73,13 +61,20 @@ public partial class Temp_SplitQuestion : System.Web.UI.Page
{//重新组装题
long exam_subject_id = Convert.ToInt64(Globals.Request("exam_subject_id"));
- if (!CheckStatus(exam_subject_id))
- {
+ long subjective = Convert.ToInt64(Globals.Request("subjective"));
+ //if (!CheckStatus(exam_subject_id))
+ //{
+ // return;
+ //}
+ var checkResult = CheckStatusByApi(subjective);
+ if (!checkResult.data)
+ {
+ Response.Write(checkResult.message);
return;
}
+
string[] newQuestionList = zhuguantiList.Split('^');
- long subjective = Convert.ToInt64(Globals.Request("subjective"));
List lt = new List();
//写入拆分题目
foreach (string x in newQuestionList)
@@ -103,56 +98,52 @@ public partial class Temp_SplitQuestion : System.Web.UI.Page
cl.score = questionList[6];
lt.Add(cl);
}
- //调用接口
- result r = (result)JavaScriptConvert.DeserializeObject(RequestPost(subjective.ToString(), lt.ToJsonString()), typeof(result));
- if (r.code == "200" && r.data.ToLower() == "true")
+
+ string zhuguanlistString = "";
+ foreach (string x in quList)
{
+ zhuguanlistString += x + "^";
+ }
+ list[3] = zhuguanlistString.Trim('^');
+ string allData = "";
+ foreach (string x in list)
+ {
+ allData += x + "$";
+ }
+ allData = allData.Trim('$');
- string zhuguanlistString = "";
- foreach (string x in quList)
- {
- zhuguanlistString += x + "^";
- }
- list[3] = zhuguanlistString.Trim('^');
- string allData = "";
- foreach (string x in list)
- {
- allData += x + "$";
- }
- allData = allData.Trim('$');
-
- //更新原始模板
- sql = "UPDATE MK_TempleteData SET TempValue_nvarchar=@TempValue_nvarchar WHERE ID_bigint=" + TemDataID;
- MySqlParameter[] sp = new MySqlParameter[] {
+ //更新原始模板
+ sql = "UPDATE MK_TempleteData SET TempValue_nvarchar=@TempValue_nvarchar WHERE ID_bigint=" + TemDataID;
+ MySqlParameter[] sp = new MySqlParameter[] {
new MySqlParameter("@TempValue_nvarchar",allData)
};
- new MysqlDBHelper(tenant).ExecuteNoQuery(sql, sp);
- //删除原始记录表
- sql = "DELETE FROM MK_TempQuestionData WHERE QuestionIndex_int='" + questionNum + "' AND TempID_bigint='" + TemDataID + "'";
- new MysqlDBHelper(tenant).ExecuteNoQuery(sql, sp);
+ new MysqlDBHelper(tenant).ExecuteNoQuery(sql, sp);
+ //删除原始记录表
+ sql = "DELETE FROM MK_TempQuestionData WHERE QuestionIndex_int='" + questionNum + "' AND TempID_bigint='" + TemDataID + "'";
+ new MysqlDBHelper(tenant).ExecuteNoQuery(sql, sp);
- string ids = "";//获取返回值,拆分后ID值
+ string ids = "";//获取返回值,拆分后ID值
- string questionNumList = "";
- //写入拆分题目
- foreach (string x in newQuestionList)
+ string questionNumList = "";
+ //写入拆分题目
+ foreach (string x in newQuestionList)
+ {
+ string[] questionList = x.Split(',');
+
+ string mkscoretype = "";
+ if (string.IsNullOrEmpty(questionList[7]))
{
- string[] questionList = x.Split(',');
+ mkscoretype = "1";
+ }
+ else
+ {
+ mkscoretype = questionList[7];
+ }
- string mkscoretype = "";
- if (string.IsNullOrEmpty(questionList[7]))
- {
- mkscoretype = "1";
- }
- else
- {
- mkscoretype = questionList[7];
- }
-
- questionNumList += questionList[4] + "$";
- sql = string.Format(@"INSERT INTO MK_TempQuestionData(
+ questionNumList += questionList[4] + "$";
+ sql = string.Format(@"INSERT INTO MK_TempQuestionData(
TempID_bigint,
QuestionIndex_int,
SmallQuestionDetail_nvarchar,
@@ -161,27 +152,32 @@ public partial class Temp_SplitQuestion : System.Web.UI.Page
questiontype_int,
mkscoretype_float) VALUES
({0},{1},{2},{3},{4},1,{5});select @@IDENTITY",
- TemDataID,
- "'" + questionList[4] + "'",
- "''",
- questionList[6] == "" ? "0" : questionList[6],
- questionList[5],
- mkscoretype
- );
- ids += new MysqlDBHelper(tenant).ExecuteScalar(sql).ToString() + ",";
- }
- questionNumList = questionNumList.Trim('$');
+ TemDataID,
+ "'" + questionList[4] + "'",
+ "''",
+ questionList[6] == "" ? "0" : questionList[6],
+ questionList[5],
+ mkscoretype
+ );
+ ids += new MysqlDBHelper(tenant).ExecuteScalar(sql).ToString() + ",";
+ }
+ questionNumList = questionNumList.Trim('$');
- int is_cutout = 0;
- if (Convert.ToInt32(new MysqlDBHelper(tenant).ExecuteScalar("SELECT COUNT(1) FROM `MK_ExamResult` where ExamSubjectId=" + exam_subject_id + " AND QuestionNumber_int='" + questionNum + "'")) <= 0)
- {
- is_cutout = 1;
- }
+ int is_cutout = 0;
+ if (Convert.ToInt32(new MysqlDBHelper(tenant).ExecuteScalar("SELECT COUNT(1) FROM `MK_ExamResult` where ExamSubjectId=" + exam_subject_id + " AND QuestionNumber_int='" + questionNum + "'")) <= 0)
+ {
+ is_cutout = 1;
+ }
- //写入任务表
- sql = "Insert Into mk_subjective_cut_record(temp_main_id,temp_detail_id,temp_question_num,is_cutout,exam_subject_id,temp_question_Newdata_ids,subjective_questions_data,cutted_question_num) VALUES(" + tempMainID + "," + TemDataID + ",'" + questionNum + "',"+ is_cutout + "," + exam_subject_id + ",'" + ids.Trim(',') + "','" + zhuguantiList + "','" + questionNumList + "')";
- new MysqlDBHelper(tenant).ExecuteNoQuery(sql, sp);
+ //写入任务表
+ sql = "Insert Into mk_subjective_cut_record(temp_main_id,temp_detail_id,temp_question_num,is_cutout,exam_subject_id,temp_question_Newdata_ids,subjective_questions_data,cutted_question_num) VALUES(" + tempMainID + "," + TemDataID + ",'" + questionNum + "'," + is_cutout + "," + exam_subject_id + ",'" + ids.Trim(',') + "','" + zhuguantiList + "','" + questionNumList + "')";
+ new MysqlDBHelper(tenant).ExecuteNoQuery(sql, sp);
+
+ //调用接口
+ result r = (result)JavaScriptConvert.DeserializeObject(RequestPost(subjective.ToString(), lt.ToJsonString()), typeof(result));
+ if (r.code == "200" && r.data)
+ {
Response.Write("1");
}
else
@@ -346,11 +342,42 @@ public partial class Temp_SplitQuestion : System.Web.UI.Page
return true;
}
+ string bearer = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI5OGQxOGRjNC1lZDAzLTRiNzMtYTczZS1iMTIxZTRhYzliNWUiLCJpYXQiOiIwNS8yOS8yMDIzIDA5OjM3OjU0IiwidXNlciI6IjIiLCJyb2xlIjoiNSIsInRlbmFudCI6IjEwMDc4IiwibmJmIjoxNjg1MzI0Mjc0LCJleHAiOjE2ODU5MjkwNzQsImlzcyI6Im1rLWFkIiwiYXVkIjoiRXhhbU1hcmtpbmdBZG1pbkNsaWVudCJ9.lVYA6Z2RRhQFYYdj1DgxA7kB6eaYWqvB1wHmaQDBr3Y";
+ private result CheckStatusByApi(long subjectiveSettingId)
+ {
+ string url = "http://192.168.2.9:6500/";
+ if (Request.Url.Host.ToLower().Contains("23544.com"))
+ {
+ // 正式地址
+ url = "https://mk-api.23544.com/ad/";
+ bearer = token;
+ }
+ else if (Request.Url.Host.ToLower().Contains("localhost"))
+ {
+ // 开发地址
+ url = "http://192.168.2.8:6500/";
+ }
+ url += "api/marking-setting/sub/" + subjectiveSettingId + "/cut-check";
+
+ var httpItem = new HttpItem();
+ httpItem.Header.Add("Authorization", bearer);
+ httpItem.Method = "GET";
+ //httpItem.Postdata = body;
+ //httpItem.PostEncoding = Encoding.UTF8;
+ httpItem.ContentType = "application/json";
+ httpItem.URL = url;
+ var reponse = HttpHelper.Default.GetHtml(httpItem);
+ if (reponse.StatusCode != HttpStatusCode.OK)
+ {
+ throw new Exception("验证接口调用失败!");
+ }
+
+ return (result)JavaScriptConvert.DeserializeObject(reponse.Html, typeof(result));
+ }
private string RequestPost(string id, string body)
{
// 测试地址
string url = "http://192.168.2.9:6500/";
- string bearer = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI5OGQxOGRjNC1lZDAzLTRiNzMtYTczZS1iMTIxZTRhYzliNWUiLCJpYXQiOiIwNS8yOS8yMDIzIDA5OjM3OjU0IiwidXNlciI6IjIiLCJyb2xlIjoiNSIsInRlbmFudCI6IjEwMDc4IiwibmJmIjoxNjg1MzI0Mjc0LCJleHAiOjE2ODU5MjkwNzQsImlzcyI6Im1rLWFkIiwiYXVkIjoiRXhhbU1hcmtpbmdBZG1pbkNsaWVudCJ9.lVYA6Z2RRhQFYYdj1DgxA7kB6eaYWqvB1wHmaQDBr3Y";
if (Request.Url.Host.ToLower().Contains("23544.com"))
{
// 正式地址
@@ -363,34 +390,36 @@ public partial class Temp_SplitQuestion : System.Web.UI.Page
url = "http://192.168.2.8:6500/";
}
url += "api/marking-setting/sub/" + id + "/cut";
- WebRequest request = WebRequest.Create(url);
- request.Method = "POST";
- //post传参数
- byte[] bytes = Encoding.ASCII.GetBytes(body);
- request.Headers.Add("Authorization", bearer);
- request.ContentType = "application/json";
- request.ContentLength = body.Length;
- Stream sendStream = request.GetRequestStream();
- sendStream.Write(bytes, 0, bytes.Length);
- sendStream.Close();
- //得到返回值
- WebResponse response = request.GetResponse();
- string OrderQuantity = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")).ReadToEnd();
- return OrderQuantity;
- }
+ var httpItem = new HttpItem();
+ httpItem.Header.Add("Authorization", bearer);
+ httpItem.Method = "POST";
+ httpItem.Postdata = body;
+ httpItem.PostEncoding = Encoding.UTF8;
+ httpItem.ContentType = "application/json";
+ httpItem.URL = url;
+ var reponse = HttpHelper.Default.GetHtml(httpItem);
+ if (reponse.StatusCode != HttpStatusCode.OK)
+ {
+ throw new Exception("调用保存失败!");
+ }
- //private string RequestPost(string id, List body)
- //{
- // string url = "http://tx.486255.com:6505/api/marking-setting/sub/" + id + "/cut";
- // HttpClient httpClient = new HttpClient();
- // var requestContent = JsonContent.Create(body);
- // var response= httpClient.PostAsync(url, requestContent).Result;
- // if (!response.IsSuccessStatusCode)
- // {
- // return string.Empty;
- // }
- // return response.Content.ReadAsStringAsync().Result;
- //}
+ return reponse.Html;
+ //WebRequest request = WebRequest.Create(url);
+ //request.Method = "POST";
+ ////post传参数
+ //byte[] bytes = Encoding.ASCII.GetBytes(body);
+ //request.Headers.Add("Authorization", bearer);
+ //request.ContentType = "application/json";
+ //request.ContentLength = body.Length;
+ //Stream sendStream = request.GetRequestStream();
+ //sendStream.Write(bytes, 0, bytes.Length);
+ //sendStream.Close();
+ ////得到返回值
+ //WebResponse response = request.GetResponse();
+ //string OrderQuantity = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")).ReadToEnd();
+ //return OrderQuantity;
+ }
+
public class CutList
{
@@ -405,7 +434,7 @@ public partial class Temp_SplitQuestion : System.Web.UI.Page
public string message { get; set; }
public string code { get; set; }
- public string data { get; set; }
+ public bool data { get; set; }
}