|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2019/3/17 18:31:14 |
标题: |
【求问】Delphi 如何 调用 讯飞提供的 人脸对比 Web API |
浏览:1981 |
|
加入我的收藏 |
楼主: |
讯飞人脸对比 API 地址 https://doc.xfyun.cn/rest_api/%E4%BA%BA%E8%84%B8%E6%AF%94%E5%AF%B9.html
我摸索了很久,还是无法正常调用,参考了 其他语言 写的样例,但是不知道如何翻译为 Delphi 的写法。
向讯飞官方提交了工单,回复说 他们不能提供 Delphi 版的样例。
不得已向 各位 Delphier ,请教。
有调用成功的朋友,能分享一个 样例 么,感谢。
----------------------------------------------
- |
作者: |
|
2019/3/17 20:12:03 |
1楼: |
有C#的样例吗?有的话把核心功能C#封装到DLL文件中,然后供Delphi程序调用。
----------------------------------------------
-
|
作者: |
|
2019/3/17 20:16:56 |
2楼: |
有 C# ,Python,Java,PHP 的样例,我是想用到 移动端的,所以 不能 用 DLL。
----------------------------------------------
-
|
作者: |
janker (janker) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2019/3/17 22:30:39 |
3楼: |
不是用INDY就行?
----------------------------------------------
-
|
作者: |
|
2019/3/17 22:50:28 |
4楼: |
我相信用 Indy ,用 RestRequest + RestClient ,用 NetHttpClient 都能行。 问题就是 具体怎么设置 哪些 参数。
----------------------------------------------
-
|
作者: |
glwang (glwang) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2019/3/18 8:42:28 |
5楼: |
可以参考C#示例,我曾经把一个C#项目成功转换成了Delphi,毕竟这2个语言都是同父异母,Delphi移动端参考: IdHTTP:= TIdHTTP.Create(nil); IdHTTP.Request.Connection:='Keep-Alive'; IdHTTP.Request.UserAgent:='Mozilla/5.0 (Linux; U; Android 6.0; zh-cn; NEM-AL10 Build/HONORNEM-AL10) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1';//'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)'; IdHTTP.Request.ContentType:='application/x-www-form-urlencoded'; IdHTTP.Request.Referer:='http://api.xfyun.cn/v1/service/v1/image_identify/face_verification'; IdHTTP.Request.Accept:='image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*'; IdHTTP.Request.AcceptLanguage:='zh-cn'; // IdHTTP.Request.AcceptEncoding:='gzip, deflate'; IdHTTP.Request.CacheControl:='no-cache'; IdHTTP.ReadTimeout:=60000; IdHTTP.HTTPOptions:=IdHTTP.HTTPOptions+[hoKeepOrigProtocol]; IdHTTP.ProtocolVersion:=pv1_1; streamWriter := TStringStream.Create('',TEncoding.UTF8);
----------------------------------------------
|
作者: |
|
2019/3/18 8:56:03 |
6楼: |
4楼 楼主你说得对。 既然你都知道,哪还等什么?
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/3/18 9:12:19 |
7楼: |
先用c#的,把各种串的值弄出来。
然后delphi,用Delphi Cross Socket,应该很容易的。MD5,HASH这些都没有太大难度。主要是没有现成的,要自己去写。这种东西伸手拿不到。
----------------------------------------------
虽千万人吾往矣!
|
作者: |
|
2019/3/18 10:02:38 |
8楼: |
看Python的代码,也很一目了然,其实就是一个POST提交。如果不确定哪里参数出错,安装下python3(比装C#方便很多),下官方demo,再改授权认证和提交参数,最后抓包比对分析下就行。
----------------------------------------------
业余编程爱好者
|
作者: |
|
2019/3/18 12:54:55 |
9楼: |
看了一下php代码,感觉。。。 算了。。。
----------------------------------------------
Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!我去WC吐一会儿去!
|
作者: |
|
2019/3/18 13:54:42 |
10楼: |
我 把 官方 提供的 C# 和 Python的样例 都运行了 都是可以正确返回内容的
但是 我发现 在 Python 中 用的是 JSON 对象传递 给 body 的 在 C# 中,用的是 & 符号 连接的两个照片的 base64
奇怪,在 Delphi 中 到底 按照 什么传递。
----------------------------------------------
-
|
作者: |
|
2019/3/18 15:08:21 |
11楼: |
我试了下,没有问题,窗口上放个Button、NetHTTPClient、Memo,代码如下,仅供参考,忽略了异常处理等
uses DateUtils, NetEncoding, Hash;
function PicToBase64(PicDir: string): string; var FS: TFileStream; SS: TStringStream; begin FS := TFileStream.Create(PicDir, fmOpenRead); SS := TStringStream.Create; try TNetEncoding.Base64.Encode(FS, SS); Result := SS.DataString; finally FS.Free; SS.Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); const xf_url: string = 'http://api.xfyun.cn/v1/service/v1/image_identify/face_verification'; x_appid: string = '改成自己的'; api_key: string = '改成自己的'; var x_time, x_param, x_checksum: string; DoMD5: THashMD5; RequestList: TStringList; Response: IHttpResponse; begin x_time := IntToStr(DateTimeToUnix(Now) - 8 * 60 * 60); x_param := TNetEncoding.Base64.EncodeBytesToString(bytesof('{"auto_rotate": true}')); x_checksum := LowerCase(DoMD5.GetHashString(api_key + x_time + x_param));
NetHTTPClient1.CustomHeaders['X-Appid'] := x_appid; NetHTTPClient1.CustomHeaders['X-CurTime'] := x_time; NetHTTPClient1.CustomHeaders['X-CheckSum'] := x_checksum; NetHTTPClient1.CustomHeaders['X-Param'] := x_param;
RequestList := TStringList.Create; RequestList.Add('first_image=' + PicToBase64('11.jpg')); RequestList.Add('secon_d_image=' + PicToBase64('22.jpg')); Response := NetHTTPClient1.Post(xf_url, RequestList); Memo1.Text := Response.ContentAsString; RequestList.Free; end;
----------------------------------------------
业余编程爱好者
|
作者: |
|
2019/3/18 15:28:06 |
12楼: |
顶 楼上。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/3/18 16:32:59 |
13楼: |
感谢,感谢。comeheres (tomorrow),你是 Delphi 的 tomorrow。 感谢。
----------------------------------------------
-
|
作者: |
|
2019/3/19 18:14:19 |
14楼: |
这个讯飞人脸识别是怎样做的 中调用他的WEBAPI吗 我POST要提交什么数据,返回的是什么数据
----------------------------------------------
我为人人为我
|
|