eoLinker-API_Shop_驗證碼識別與生成類API調用的代碼示例合集:六位圖片驗證碼生成、四位圖片驗證碼生成、簡單驗證碼識別等...

以下示例代碼適用于 www.apishop.net 網站下的API,使用本文提及的接口調用代碼示例前,您需要先申請相應的API服務。

  1. 六位圖片驗證碼生成:包括純數字、小寫字母、大寫字母、大小寫混合、數字+小寫、數字+大寫、數字+大小寫等情況。
  2. 四位圖片驗證碼生成:包括純數字、小寫字母、大寫字母、大小寫混合、數字+小寫、數字+大寫、數字+大小寫等情況。
  3. 簡單驗證碼識別:驗證碼類型 : 數字+字母, 純英文, 純數字,計算題
  4. 英數_驗證碼識別:純數字,純英文,數字+英文
  5. 中英數_驗證碼識別:英文、數字、中文或混合型

API Shop(apishop.net)提供多達50款的常用第三方API,可以從github上下載代碼示例合集:https://github.com/apishop/All-APIs

以上接口均包含PHP、Python、C#和Java等四種語言的代碼示例,以 識別中英數驗證碼 API為例:

(1)基于PHP的 識別中英數驗證碼 API服務請求的代碼示例

<?php
$method = "POST";
$url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate";
$headers = NULL;
$params = array("convertJPG" => "", //是否轉換成jpg格式(有少量png或gif圖轉成jpg格式后識別率明顯提高,但并不是所有png或gif轉成jpg后都會提高識別率。) 此字段為1時表示需要把圖片轉為jpg格式,其他值不做轉換操作。"imgBASE64" => "", //圖片文件的base64字符串。圖片大小需要小于100KB。"codeType" => "", //驗證碼類型,最大長度為10.(10:任意長度數字(成功率有所降低),11~19:1~9位數字,20:任意長度英文(成功率有所降低),21~29:1~9位英文,30:任意長度英數混合(成功率有所降低),31~39:1~9位英數混合,40:任意長度漢字(成功率有所降低),41~49:1~9位漢字,50:任意長度中英數混合(成功率有所降低)),如“34”代表四位英數混合	
);$result = apishop_curl($method, $url, $headers, $params);
If ($result) {$body = json_decode($result["body"], TRUE);$status_code = $body["statusCode"];If ($status_code == "000000") {//狀態碼為000000, 說明請求成功echo "請求成功:" . $result["body"];} else {//狀態碼非000000, 說明請求失敗echo "請求失敗:" . $result["body"];}
} else {//返回內容異常,發送請求失敗,以下可根據業務邏輯自行修改echo "發送請求失敗";
}/*** 轉發請求到目的主機* @param $method string 請求方法* @param $URL string 請求地址* @param null $headers 請求頭* @param null $param 請求參數* @return array|bool*/
function apishop_curl(&$method, &$URL, &$headers = NULL, &$param = NULL)
{// 初始化請求$require = curl_init($URL);// 判斷是否HTTPS$isHttps = substr($URL, 0, 8) == "https://" ? TRUE : FALSE;// 設置請求方式switch ($method) {case "GET":curl_setopt($require, CURLOPT_CUSTOMREQUEST, "GET");break;case "POST":curl_setopt($require, CURLOPT_CUSTOMREQUEST, "POST");break;default:return FALSE;}if ($param) {curl_setopt($require, CURLOPT_POSTFIELDS, $param);}if ($isHttps) {// 跳過證書檢查curl_setopt($require, CURLOPT_SSL_VERIFYPEER, FALSE);// 檢查證書中是否設置域名curl_setopt($require, CURLOPT_SSL_VERIFYHOST, 2);}if ($headers) {// 設置請求頭curl_setopt($require, CURLOPT_HTTPHEADER, $headers);}// 返回結果不直接輸出curl_setopt($require, CURLOPT_RETURNTRANSFER, TRUE);// 重定向curl_setopt($require, CURLOPT_FOLLOWLOCATION, TRUE);// 把返回頭包含再輸出中curl_setopt($require, CURLOPT_HEADER, TRUE);// 發送請求$response = curl_exec($require);// 獲取頭部長度$headerSize = curl_getinfo($require, CURLINFO_HEADER_SIZE);// 關閉請求curl_close($require);if ($response) {// 返回頭部字符串$header = substr($response, 0, $headerSize);// 返回體$body = substr($response, $headerSize);// 過濾隱藏非法字符$bodyTemp = json_encode(array(0 => $body));$bodyTemp = str_replace("\ufeff", "", $bodyTemp);$bodyTemp = json_decode($bodyTemp, TRUE);$body = trim($bodyTemp[0]);// 將返回結果頭部轉成數組$respondHeaders = array();$header_rows = array_filter(explode(PHP_EOL, $header), "trim");foreach ($header_rows as $row) {$keylen = strpos($row, ":");if ($keylen) {$respondHeaders[] = array("key" => substr($row, 0, $keylen),"value" => trim(substr($row, $keylen + 1)));}}return array("headers" => $respondHeaders,"body" => $body);} else {return FALSE;}
}
復制代碼

(2)基于Python的 識別中英數驗證碼 API服務請求的代碼示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 測試環境: python2.7
# 安裝requests依賴 => pip install requests/ easy_install requests# 導入requests依賴
import requests
import json
import sysreload(sys)
sys.setdefaultencoding('utf-8')def apishop_send_request(method, url, params=None, headers=None):'''轉發請求到目的主機@param method str 請求方法@param url str 請求地址@param params dict 請求參數@param headers dict 請求頭'''method = str.upper(method)if method == 'POST':return requests.post(url=url, data=params, headers=headers)elif method == 'GET':return requests.get(url=url, params=params, headers=headers)else:return Nonemethod = "POST"
url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate"
headers = None
params = {			"convertJPG":"", #是否轉換成jpg格式(有少量png或gif圖轉成jpg格式后識別率明顯提高,但并不是所有png或gif轉成jpg后都會提高識別率。) 此字段為1時表示需要把圖片轉為jpg格式,其他值不做轉換操作。"imgBASE64":"", #圖片文件的base64字符串。圖片大小需要小于100KB。"codeType":"", #驗證碼類型,最大長度為10.(10:任意長度數字(成功率有所降低),11~19:1~9位數字,20:任意長度英文(成功率有所降低),21~29:1~9位英文,30:任意長度英數混合(成功率有所降低),31~39:1~9位英數混合,40:任意長度漢字(成功率有所降低),41~49:1~9位漢字,50:任意長度中英數混合(成功率有所降低)),如“34”代表四位英數混合
}
result = apishop_send_request(method=method, url=url, params=params, headers=headers)
if result:body = result.textresponse = json.loads(body)status_code = response["statusCode"]if (status_code == '000000'):# 狀態碼為000000, 說明請求成功print('請求成功:%s' % (body,))else:# 狀態碼非000000, 說明請求失敗print('請求失敗: %s' % (body,))
else:# 返回內容異常,發送請求失敗print('發送請求失敗')
復制代碼

(3)基于C#的 識別中英數驗證碼 API服務請求的代碼示例

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web.Script.Serialization;namespace apishop_sdk
{
class Program
{/*** 轉發請求到目的主機* @param method string 請求方法* @param url string 請求地址* @param params Dictionary<string,string> 請求參數* @param headers Dictionary<string,string> 請求頭* @return string**/static string apishop_send_request(string method, string url, Dictionary<string, string> param, Dictionary<string, string> headers){string result = string.Empty;try{string paramData = "";if (param != null && param.Count > 0){StringBuilder sbuilder = new StringBuilder();foreach (var item in param){if (sbuilder.Length > 0){sbuilder.Append("&");}sbuilder.Append(item.Key + "=" + item.Value);}paramData = sbuilder.ToString();}method = method.ToUpper();if (method == "GET"){url = string.Format("{0}?{1}", url, paramData);}HttpWebRequest wbRequest = (HttpWebRequest)WebRequest.Create(url);if (method == "GET"){wbRequest.Method = "GET";}else if (method == "POST"){wbRequest.Method = "POST";wbRequest.ContentType = "application/x-www-form-urlencoded";wbRequest.ContentLength = Encoding.UTF8.GetByteCount(paramData);using (Stream requestStream = wbRequest.GetRequestStream()){using (StreamWriter swrite = new StreamWriter(requestStream)){swrite.Write(paramData);}}}HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();using (Stream responseStream = wbResponse.GetResponseStream()){using (StreamReader sread = new StreamReader(responseStream)){result = sread.ReadToEnd();}}}catch{return "";}return result;}class Response{public string statusCode;}static void Main(string[] args){string method = "POST";string url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate";Dictionary<string, string> param = new Dictionary<string, string>();			param.Add("convertJPG", ""); //是否轉換成jpg格式(有少量png或gif圖轉成jpg格式后識別率明顯提高,但并不是所有png或gif轉成jpg后都會提高識別率。) 此字段為1時表示需要把圖片轉為jpg格式,其他值不做轉換操作。param.Add("imgBASE64", ""); //圖片文件的base64字符串。圖片大小需要小于100KB。param.Add("codeType", ""); //驗證碼類型,最大長度為10.(10:任意長度數字(成功率有所降低),11~19:1~9位數字,20:任意長度英文(成功率有所降低),21~29:1~9位英文,30:任意長度英數混合(成功率有所降低),31~39:1~9位英數混合,40:任意長度漢字(成功率有所降低),41~49:1~9位漢字,50:任意長度中英數混合(成功率有所降低)),如“34”代表四位英數混合Dictionary<string, string> headers = null;string result = apishop_send_request(method, url, param, headers);if (result == ""){//返回內容異常,發送請求失敗Console.WriteLine("發送請求失敗");return;}Response res = new JavaScriptSerializer().Deserialize<Response>(result);if (res.statusCode == "000000"){//狀態碼為000000, 說明請求成功Console.WriteLine(string.Format("請求成功: {0}", result));}else{//狀態碼非000000, 說明請求失敗Console.WriteLine(string.Format("請求失敗: {0}", result));}Console.ReadLine();}}
}
復制代碼

(4)基于Java的 識別中英數驗證碼 API服務請求的代碼示例

package net.apishop.www.controller;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;/**
* httpUrlConnection訪問遠程接口工具
*/
public class Api
{/*** 方法體說明:向遠程接口發起請求,返回字節流類型結果* param url 接口地址* param requestMethod 請求方式* param params 傳遞參數     重點:參數值需要用Base64進行轉碼* return InputStream 返回結果*/public static InputStream httpRequestToStream(String url, String requestMethod, Map<String, String> params){InputStream is = null;try{String parameters = "";boolean hasParams = false;// 將參數集合拼接成特定格式,如name=zhangsan&age=24for (String key : params.keySet()){String value = URLEncoder.encode(params.get(key), "UTF-8");parameters += key + "=" + value + "&";hasParams = true;}if (hasParams){parameters = parameters.substring(0, parameters.length() - 1);}// 請求方式是否為getboolean isGet = "get".equalsIgnoreCase(requestMethod);// 請求方式是否為postboolean isPost = "post".equalsIgnoreCase(requestMethod);if (isGet){url += "?" + parameters;}URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection();// 請求的參數類型(使用restlet框架時,為了兼容框架,必須設置Content-Type為“”空)conn.setRequestProperty("Content-Type", "application/octet-stream");//conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 設置連接超時時間conn.setConnectTimeout(50000);// 設置讀取返回內容超時時間conn.setReadTimeout(50000);// 設置向HttpURLConnection對象中輸出,因為post方式將請求參數放在http正文內,因此需要設置為ture,默認falseif (isPost){conn.setDoOutput(true);}// 設置從HttpURLConnection對象讀入,默認為trueconn.setDoInput(true);// 設置是否使用緩存,post方式不能使用緩存if (isPost){conn.setUseCaches(false);}// 設置請求方式,默認為GETconn.setRequestMethod(requestMethod);// post方式需要將傳遞的參數輸出到conn對象中if (isPost){DataOutputStream dos = new DataOutputStream(conn.getOutputStream());dos.writeBytes(parameters);dos.flush();dos.close();}// 從HttpURLConnection對象中讀取響應的消息// 執行該語句時才正式發起請求is = conn.getInputStream();}catch(UnsupportedEncodingException e){e.printStackTrace();}catch(MalformedURLException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}return is;}public static void main(String args[]){String url = "https://api.apishop.net/common/checkcode/recognizeVerifyCodeComplicate";String requestMethod = "POST";Map<String, String> params = new HashMap<String, String>();			params.put("convertJPG", ""); //是否轉換成jpg格式(有少量png或gif圖轉成jpg格式后識別率明顯提高,但并不是所有png或gif轉成jpg后都會提高識別率。) 此字段為1時表示需要把圖片轉為jpg格式,其他值不做轉換操作。params.put("imgBASE64", ""); //圖片文件的base64字符串。圖片大小需要小于100KB。params.put("codeType", ""); //驗證碼類型,最大長度為10.(10:任意長度數字(成功率有所降低),11~19:1~9位數字,20:任意長度英文(成功率有所降低),21~29:1~9位英文,30:任意長度英數混合(成功率有所降低),31~39:1~9位英數混合,40:任意長度漢字(成功率有所降低),41~49:1~9位漢字,50:任意長度中英數混合(成功率有所降低)),如“34”代表四位英數混合	String result = null;try{InputStream is = httpRequestToStream(url, requestMethod, params);byte[] b = new byte[is.available()];is.read(b);result = new String(b);}catch(IOException e){e.printStackTrace();}if (result != null){JSONObject jsonObject = JSONObject.parseObject(result);String status_code = jsonObject.getString("statusCode");if (status_code == "000000"){// 狀態碼為000000, 說明請求成功System.out.println("請求成功:" + jsonObject.getString("result"));}else{// 狀態碼非000000, 說明請求失敗System.out.println("請求失敗:" + jsonObject.getString("desc"));}}else{// 返回內容異常,發送請求失敗,以下可根據業務邏輯自行修改System.out.println("發送請求失敗");}}
}
復制代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255301.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網上書店 買方數據庫

買方表 屬性 字段名 類型 鍵值 是否空 用戶ID UserId char(5) 主鍵 用戶名稱 UserName nvarchar(50) 用戶密碼 UserPwd nvarchar(50) 用戶真實姓名 UserRealName nvarchar(50) 用戶地址 UserAddress nvarchar(100) …

Web開發模式(MVC設計模式)

1.MVC&#xff1a;(Model-View-Controller)操作流程 顯示層View:主要負責接收Servlet傳遞的內容&#xff0c;并調用JavaBean把內容顯示給用戶。 控制層Controller:負責所有的用戶請求參數&#xff0c;判斷請求參數是否合法&#xff0c;根據請求方式調用JavaBean進行處理&#x…

Arduino IDE 配置文件

最近學習Arduino。 Arduino開源硬件和Arduino IDE是一個很容易上手的系統。 目前arduino已經支持很多種板類型&#xff0c;甚至已經支持了部分arm芯片。比如arduino ng、arduino uno、arduino mini、pro mini等。但是大多數情況&#xff0c;都是使用的atmega8/at…

HALCON示例程序bottle.hdev、bottlet.hdev瓶體字符OCR的訓練和檢測

HALCON示例程序bottle.hdev、bottlet.hdev瓶體字符OCR的訓練和檢測 示例程序源碼&#xff08;加注釋&#xff09; 1、先介紹bottlet.hdev&#xff08;訓練OCR識別文件&#xff09; *定義一個字符串變量FontName &#xff0c;內容是bottle FontName : ‘bottle’ *第一步分割…

【機器學習】神經網絡BP理論與python實例系列

理論部分 《機器學習——人工神經網絡之發展歷史&#xff08;神經元數學模型、感知器算法&#xff09;》 《機器學習——人工神經網絡之多層神經網絡&#xff08;多層與三層&#xff09;》 《機器學習——人工神經網絡之后向傳播算法&#xff08;BP算法&#xff09;》 《機…

bzoj1597: [Usaco2008 Mar]土地購買

斜率優化dp。 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn 50000 10;struct Field {long long x,y; } t[maxn]; long long f[maxn],x[maxn],y[maxn]; int q[maxn],l,r; int n,cnt;bool cmp(F…

vue封裝axios接口

一、安裝axios axios安裝命令&#xff1a;cnpm install axios 二、在文件中引用axios 一開始我是放在src下的main.js這個文件里面&#xff0c;后來發現mounted鉤子讀取接口方法為undefined&#xff0c;百度了才發現是vue生命周期的原因&#xff0c;最好的解決辦法是把axios單獨…

編寫Arduino支持的C++類庫

以下為摘抄的例子&#xff0c;已經親自驗證過&#xff0c;例子是正確的 我們在上一講中實現了一個TN901紅外溫度傳感器51程序到Arduino程序的轉換&#xff0c;如果代碼越來越多這樣程序的可維護性會隨之降低&#xff0c;也不適合團度開發。我們應該把常用的文件封裝成C庫&#…

函數,游標與存儲過程的綜合應用

--在TOY數據庫中完成以下操作use toygo--1、編寫一個存儲過程&#xff0c;接收任意一個訂單號&#xff0c;打印訂單的表頭數據。格式如下&#xff1a;--(其中訂單編號由訂單日期訂單號的字符串組成)--訂單編號:20010520000001 訂貨日期:2001-05-20 訂貨人:拉爾森create pro…

HALCON示例程序check_blister.hdev藥品膠囊檢測

HALCON check_blister.hdev藥品膠囊檢測 示例程序源碼&#xff08;加注釋&#xff09; 顯示、讀入圖片、設置顯示字體等&#xff0c;之前的帖子已經介紹過了 dev_close_window () dev_update_off () read_image (ImageOrig, ‘blister/blister_reference’) dev_open_window_f…

【機器學習實戰】——常見函數積累

目錄 第二章 k近鄰算法 1、array.sum(axies 1) : 2、array.argsort(axies0/1) 3、array.tile(mat,(m,n)) 4、dict.get(key,value) 5、sorted函數 6、string.strip()函數 7、string.split() 8、scatter&#xff08;&#xff09;函數 9、min()&max() 10、enumera…

安裝oracle 11g 客戶端,檢查過程中報物理內存不足的解決

今早接到同事電話&#xff0c;說安裝oracle 11g客戶端的時候&#xff0c;在檢查先決條件的時候&#xff0c;報錯&#xff0c;說內存不足&#xff0c;但是本機的內存是2G&#xff0c;肯定夠用&#xff1a;如圖&#xff1a; 找了一圈&#xff0c;原來Oracle執行先決條件檢查是依賴…

智能時代 軟件賦能——2017中國軟件技術大會

由中國科學院軟件研究所、中科軟科技股份有限公司聯合主辦&#xff0c;北京中科凱亞科技有限公司協辦的第15屆中國軟件技術大會將于2017年12月在北京 國家會議中心隆重舉行。 毋庸置疑&#xff0c;我們正在邁入智能時代&#xff0c;伴隨著物聯網、云計算、大數據、人工智能等智…

Arduino 代碼機制

新建一個Arduino程序。可是建完就郁悶了&#xff0c;因為只看到了setup和loop函數&#xff0c;卻沒有基本的c函數。 void setup() {// put your setup code here, to run once: }void loop() {// put your main code here, to run repeatedly: }于是好奇心就來了&#xff0c;當…

Codeforces Round #401 (Div. 2) D. Cloud of Hashtags

題目鏈接&#xff1a;D. Cloud of Hashtags 題意&#xff1a; 給你n個字符串&#xff0c;讓你刪后綴&#xff0c;使得這些字符串按字典序排列&#xff0c;要求是刪除的后綴最少 題解&#xff1a; 由于n比較大&#xff0c;我們可以將全部的字符串存在一個數組里面&#xff0c;然…

HALCON示例程序check_blister_mixed.hedv藥品膠囊缺陷檢測

HALCON示例程序check_blister_mixed.hedv藥品膠囊缺陷檢測 示例程序源碼&#xff08;加注釋&#xff09; 讀入圖片與顯示相關設置 dev_close_window () read_image (Image, ‘blister/blister_mixed_reference’) dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHan…

php類與對象

1.類與對象 對象&#xff1a;實際存在該類事物中每個實物的個體。$a new User(); 實例化后的$a 引用&#xff1a;php的別名&#xff0c;兩個不同的變量名字指向相同的內容 封裝: 把對象的屬性和方法組織在一個類&#xff08;邏輯單元&#xff09;里 繼承&#xff1a;以原有的類…

【深度學習系列】基礎知識、模型學習

基礎知識 原創 【深度學習】——訓練過程 原創 【深度學習】——BN層&#xff08;batch normalization&#xff09; 原創 【深度學習】——激活函數&#xff08;sigmoid、tanh、relu、softmax&#xff09; 原創 【深度學習】——損失函數 原創 【深度學習】——梯度下…

史陶比爾機器人的 LLI (Low Level Interface)

史陶比爾機器人的 LLI &#xff08;Low Level Interface&#xff09; 史陶比爾機器人擁有 Low Level Interface (LLI)接口選項. 在CS8C控制器的時代&#xff0c;LLI 接口仍然可用。這是一個選項接口。.這是除了VAL3編程語言之外的替代操作系統。通過C程序替代你的程序。 這里的…

陽獅集團與阿里巴巴全域營銷伙伴關系再升級:數據和業務合作將更緊密

3月6日&#xff0c;阿里巴巴集團與全球領先的廣告傳播集團陽獅集團在上海開啟了主題為“新局面新高度”新階段的合作溝通&#xff0c;未來雙方將進行更緊密的數據和業務層面的合作。阿里巴巴集團CMO、阿里媽媽總裁董本洪及陽獅媒體大中華區首席執行官張敬鸞就開放共贏達成共識&…