时间不多,废话少说:

网络请求代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net.Security;
  6. using System.Security.Cryptography.X509Certificates;
  7. using System.DirectoryServices.Protocols;
  8. using System.ServiceModel.Security;
  9. using System.Net;
  10. using System.IO;
  11. using System.IO.Compression;
  12. using System.Text.RegularExpressions;
  13. using System.Threading;
  14.  
  15. namespace Meeting.Common
  16. {
  17. /// <summary>
  18. /// 有关HTTP请求的辅助类
  19. /// </summary>
  20. public class HttpWebResponseUtility
  21. {
  22.  
  23. public static string GetUrl(string url)
  24. {
  25.  
  26. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  27. {
  28. System.Console.WriteLine("https connections.....");
  29. ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  30. // 这里设置了协议类型。
  31. //ServicePointManager.SecurityProtocol =SecurityProtocolType.Tls12;// (SecurityProtocolType)3072;// SecurityProtocolType.Tls1.2;
  32. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //(SecurityProtocolType)768 | (SecurityProtocolType)3072
  33.  
  34. ServicePointManager.CheckCertificateRevocationList = true;
  35. ServicePointManager.DefaultConnectionLimit = ;
  36. ServicePointManager.Expect100Continue = false;
  37. }
  38. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  39. //增加下面两个属性即可
  40. request.KeepAlive = false;
  41. request.ProtocolVersion = HttpVersion.Version10;
  42.  
  43. request.Method = "GET"; //使用get方式发送数据
  44. request.ContentType = "application/x-www-form-urlencoded";
  45. request.Referer = "";
  46. request.AllowAutoRedirect = true;
  47. request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
  48. request.Accept = "*/*";
  49.  
  50. //获取网页响应结果
  51. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  52. // Thread.Sleep(2000);
  53. Stream stream = response.GetResponseStream();
  54. //client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
  55. string result = string.Empty;
  56. using (StreamReader sr = new StreamReader(stream))
  57. {
  58. result = sr.ReadToEnd();
  59. }
  60.  
  61. if (request != null)
  62. {
  63. request.Abort();
  64. }
  65.  
  66. if (response != null)
  67. {
  68. response.Close();
  69. }
  70.  
  71. return result;
  72. }
  73. private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
  74. /// <summary>
  75. /// 创建GET方式的HTTP请求
  76. /// </summary>
  77. /// <param name="url">请求的URL</param>
  78. /// <param name="timeout">请求的超时时间</param>
  79. /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
  80. /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
  81. /// <returns></returns>
  82. public static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)
  83. {
  84. if (string.IsNullOrEmpty(url))
  85. {
  86. throw new ArgumentNullException("url");
  87. }
  88. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  89. request.Method = "GET";
  90. request.UserAgent = DefaultUserAgent;
  91. if (!string.IsNullOrEmpty(userAgent))
  92. {
  93. request.UserAgent = userAgent;
  94. }
  95. if (timeout.HasValue)
  96. {
  97. request.Timeout = timeout.Value;
  98. }
  99. if (cookies != null)
  100. {
  101. request.CookieContainer = new CookieContainer();
  102. request.CookieContainer.Add(cookies);
  103. }
  104. return request.GetResponse() as HttpWebResponse;
  105. }
  106. /// <summary>
  107. /// 创建POST方式的HTTP请求
  108. /// </summary>
  109. /// <param name="url">请求的URL</param>
  110. /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>
  111. /// <param name="timeout">请求的超时时间</param>
  112. /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>
  113. /// <param name="requestEncoding">发送HTTP请求时所用的编码</param>
  114. /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
  115. /// <returns></returns>
  116. public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int? timeout, string userAgent, Encoding requestEncoding, CookieCollection cookies)
  117. {
  118. if (string.IsNullOrEmpty(url))
  119. {
  120. throw new ArgumentNullException("url");
  121. }
  122. if (requestEncoding == null)
  123. {
  124. throw new ArgumentNullException("requestEncoding");
  125. }
  126. HttpWebRequest request = null;
  127. //如果是发送HTTPS请求
  128. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  129. {
  130. ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  131. request = WebRequest.Create(url) as HttpWebRequest;
  132. request.ProtocolVersion = HttpVersion.Version10;
  133. }
  134. else
  135. {
  136. request = WebRequest.Create(url) as HttpWebRequest;
  137. }
  138. request.Method = "POST";
  139. request.ContentType = "application/x-www-form-urlencoded";
  140.  
  141. if (!string.IsNullOrEmpty(userAgent))
  142. {
  143. request.UserAgent = userAgent;
  144. }
  145. else
  146. {
  147. request.UserAgent = DefaultUserAgent;
  148. }
  149.  
  150. if (timeout.HasValue)
  151. {
  152. request.Timeout = timeout.Value;
  153. }
  154. if (cookies != null)
  155. {
  156. request.CookieContainer = new CookieContainer();
  157. request.CookieContainer.Add(cookies);
  158. }
  159. //如果需要POST数据
  160. if (!(parameters == null || parameters.Count == ))
  161. {
  162. StringBuilder buffer = new StringBuilder();
  163. int i = ;
  164. foreach (string key in parameters.Keys)
  165. {
  166. if (i > )
  167. {
  168. buffer.AppendFormat("&{0}={1}", key, parameters[key]);
  169. }
  170. else
  171. {
  172. buffer.AppendFormat("{0}={1}", key, parameters[key]);
  173. }
  174. i++;
  175. }
  176. byte[] data = requestEncoding.GetBytes(buffer.ToString());
  177. using (Stream stream = request.GetRequestStream())
  178. {
  179. stream.Write(data, , data.Length);
  180. }
  181. }
  182. return request.GetResponse() as HttpWebResponse;
  183. }
  184.  
  185. private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  186. {
  187. return true; //总是接受
  188. }
  189. }
  190. }

执行代码如下:

  1. public static void GetLinceNo()
  2. {
  3. using (TPMSEntities context = new TPMSEntities())
  4. {
  5. List<dc_cb_SupplierLinceNo> lst = new List<dc_cb_SupplierLinceNo>();
  6. var data = context.dc_p_Provider_temp2019.ToList();
  7. foreach(var item in data)
  8. {
  9. if (!string.IsNullOrEmpty(item.LicenceNo))
  10. {
  11. continue;
  12. }
  13. string uri = string.Format("https://www.creditchina.gov.cn/api/public_search/getCreditCodeFacade?keyword={0}&_={1}", item.SupplierName, GetTimestamp(DateTime.Now));
  14.  
  15. var json = HttpWebResponseUtility.GetUrl(uri);
  16. if (!string.IsNullOrEmpty(json))
  17. {
  18. try
  19. {
  20. var jsonResult = JsonConvert.DeserializeObject<res>(json);
  21.  
  22. if (jsonResult != null && jsonResult.result != null && jsonResult.result.results != null)
  23. {
  24. var model = jsonResult.result.results.Where(A => A.entName == item.SupplierName).FirstOrDefault();
  25. if (model == null)
  26. {
  27. continue;
  28. }
  29. string credCode = model.credCode;
  30. dc_cb_SupplierLinceNo d = new dc_cb_SupplierLinceNo();
  31. d.SupplierName = item.SupplierName;
  32. d.LinceNo = credCode;
  33. context.dc_cb_SupplierLinceNo.Add(d);
  34. context.SaveChanges();
  35. }
  36. else
  37. {
  38. continue;
  39. }
  40. }
  41. catch(Exception ex)
  42. {
  43. continue;
  44. }
  45. }
  46. else
  47. {
  48. continue;
  49. }
  50.  
  51. }
  52. //using (var Transaction = context.Database.BeginTransaction())
  53. //{
  54. // try
  55. // {
  56.  
  57. // Transaction.Commit();
  58. // }
  59. // catch (Exception ex)
  60. // {
  61. // Transaction.Rollback();
  62. // }
  63. //}
  64. }
  65. }
  66.  
  67. public static string GetTimestamp(DateTime d)
  68. {
  69. TimeSpan ts = d - new DateTime(, , );
  70. return ts.TotalMilliseconds.ToString();
  71. }
  72. #endregion
  73.  
  74. public class res
  75. {
  76. public resultCls result { get; set; }
  77. public int totalPageCount { get; set; }
  78. }
  79.  
  80. public class resultCls
  81. {
  82. public string start { get; set; }
  83. public string pageSize { get; set; }
  84. public string totalCount { get; set; }
  85. public List<resultsCls> results { get; set; }
  86. public string exportButtonValid { get; set; }
  87. public string currentPageNo { get; set; }
  88. public string page { get; set; }
  89. public string totalPageCount { get; set; }
  90.  
  91. }
  92.  
  93. public class resultsCls
  94. {
  95. public string id { get; set; }
  96. public string entName { get; set; }
  97. public string credCode { get; set; }
  98. public string regCode { get; set; }
  99. public string orgCode { get; set; }
  100. public string taxCode { get; set; }
  101.  
  102. public string status { get; set; }
  103. public string modifyDate { get; set; }
  104. public string md5 { get; set; }
  105. public string rank { get; set; }
  106. public string solrStatus { get; set; }
  107. public string validTime { get; set; }
  108. }

虽说免费,但是这个方法服务端会限制请求的次数!

@陈卧龙的博客

C# 获取社会统一信用代码的更多相关文章

  1. 【NumberValidators】工商营业执照号码和统一社会信用代码验证

    从本质上讲,工商营业执照号码和统一社会信用代码是两套完全不一样的编码规则,识别结果也仅有行政区划部分为两者共有,但因为这两种编码同时存在的原因,所以如果需要在系统中唯一标志一家企业时,还是可以通过工商 ...

  2. JS实现统一社会信用代码的效验(组织机构代码效验)

    参考原文https://blog.csdn.net/hdhxby/article/details/56015370 部分错误,修改整合了下 想查询数据的,请点击:统一信用代码查询地址 查看效验规则点击 ...

  3. 精准准确的统一社会信用代码正则(js)

    参照标准: <GB_32100-2015_法人和其他组织统一社会信用代码编码规则.> 按照编码规则: 统一代码为18位,统一代码由十八位的数字或大写英文字母(不适用I.O.Z.S.V)组成 ...

  4. 统一社会信用代码+组织机构代码 校验 python

    转自: https://blog.csdn.net/warrah/article/details/69338912 https://blog.csdn.net/qq_37142340/article/ ...

  5. 使用js对社会信用代码进行正则验证

    注:参考了该博客(https://blog.csdn.net/qq_37142340/article/details/80695187)进行了一些修改,本文验证使用在微信小程序上. 直接贴代码: va ...

  6. .NET4.5 WFP中用WebBrowser获取/操作网页html代码

    引言 想给自己之前写的网页小说爬虫程序更新换代,之前一直是用winform的形式写的程序,因此这一次更新打算把UI换成WPF(因为听说WPF很漂亮),顺便也以此引入WPF的学习. 那么作为网页爬虫程序 ...

  7. OC获取文件(夹)的代码行数

    /* 考察NSString NSArray NSFileManager */ #import <Foundation/Foundation.h> /* 计算单个文件的代码行数 path:文 ...

  8. php获取服务器时间的代码

    php获取服务器时间的代码. 用php的date函数即可来获取服务器上的时间:  <?php //将时区设置为中国 date_default_timezone_set("PRC&quo ...

  9. jquery利用event.which方法获取键盘输入值的代码

    jquery利用event.which方法获取键盘输入值的代码,需要的朋友可以参考下. 实例 显示按了哪个键: $("input").keydown(function(event) ...

随机推荐

  1. hadoop mapreduce求解有序TopN

    利用hadoop的map和reduce排序特性实现对数据排序取TopN条数据. 代码参考:https://github.com/asker124143222/wordcount 1.样本数据,假设是订 ...

  2. [PHP] PHP PDO与mysql的连接单例防止超时情况处理

    这个数据库类主要处理了单例模式下创建数据库对象时,如果有两次较长时间的间隔去执行sql操作,再次处理会出现连接失败的问题,利用一个cache数组存放pdo对象与时间戳,把两次执行之间的时间进行了比较, ...

  3. Windows远程桌面多用户登录的问题

    RDP WRAPPER 同时登录 多用户补丁   https://cloud.tencent.com/developer/article/1460728   解决系统更新导致无法多用户登录的问题 问题 ...

  4. vue之tab切换

    <style> .active{ color: red; } div a{ display: block; } </style> <script src="ht ...

  5. 谈谈你对OOM的理解?

    (1)整体架构 (1)ByteBuffer使用native方法,直接在堆外分配内存. 当堆外内存(也即本地物理内存)不够时,就会抛出这个异常     ----GC Direct buffer memo ...

  6. luoguP4343自动刷题机(二分标准题)

    https://www.luogu.org/problem/P4343 参考博客:https://www.luogu.org/blog/ofnoname/solution-p4343 这真是一语点醒梦 ...

  7. 剑指Offer-9.变态跳台阶(C++/Java)

    题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设我们要求跳上第3级的跳法,可以从第0级跳3级台阶到达,也可以从第1级 ...

  8. 剑指Offer-2.替换空格(C++/Java)

    题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 题意明确,就是将一个字符 ...

  9. C++ STL bitset 容器详解

    C++ STL bitset 容器详解 本篇随笔讲解\(C++STL\)中\(bitset\)容器的用法及常见使用技巧. \(bitset\)容器概论 \(bitset\)容器其实就是个\(01\)串 ...

  10. jenkins配置自动部署java程序

    任务背景 该项目包含4个程序包:a.jar,b.jar,c.jar,d.jar,每次启动前需要修改程序中的配置文件(修改数据源配置),然后按照先后顺序启动. 任务目标 1.利用jenkins拉取代码, ...