阿里云 httpss?阿里云是诈骗软件吗

如何用阿里云的API进行身份证识别

以下内容属于引用复制,但可以回复你的问题:

准备工作:在libs下添加 alicloud-Android-apigateway-sdk-1.0.1.jar,commons-codec-1.10-1.jar

在build.gradle添加 compile'com.squareup.okhttp3:okhttp:3.4.1'

在onCreate,或者afterViews初始化API网关

private void initGatewaySdk(){

//初始化API网关

ApiGatewayClient.init(getApplicationContext(), false);

}

调用拍照功能

private void getPhotoCard(){

final String status= Environment.getExternalStorageState();

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){

requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, CAMERA_REQUEST_CODE);

}

if(status.equals(Environment.MEDIA_MOUNTED)){

defaultPhotoAddress= PHOTO_DIR+"/"+ getPhotoName();

PreferenceUtils.modifyStringValueInPreferences(CardActivity.this, Preferences.IMAGE_3, defaultPhotoAddress);

imageUri= Uri.fromFile(new File(defaultPhotoAddress));

Intent intentPhoto= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture

intentPhoto.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

startActivityForResult(intentPhoto, CAMERA_REQUEST_CODE);

} else{

Toast.makeText(CardActivity.this,"没有sd卡", Toast.LENGTH_SHORT).show();

}

}

可以对照片进行裁剪

private void cropImageUri(Uri desUri, int outputX, int outputY, int requestCode){

Intent intent= new Intent("com.android.camera.action.CROP");

intent.setDataAndType(desUri,"image/*");

intent.putExtra("crop","true");

intent.putExtra("aspectX", 5);

intent.putExtra("aspectY", 3);

intent.putExtra("outputX", outputX);

intent.putExtra("outputY", outputY);

intent.putExtra("scale", true);

intent.putExtra(MediaStore.EXTRA_OUTPUT, desUri);

intent.putExtra("return-data", false);

intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

intent.putExtra("noFaceDetection", true);

startActivityForResult(intent, requestCode);

}

用base64上传照片

private void trygetCardNum(){

if(NetworkUtils.isConnectWithTip(this,"您未连接网络,无法获取数据")){

LoadingUtil.show(this);

String imgBase64="";

try{

defaultPhotoAddress= PreferenceUtils.getStringValueInPreferences(this, Preferences.IMAGE_3);

File file= new File(defaultPhotoAddress);

byte[] content= new byte[(int) file.length()];

FileInputStream finputstream= new FileInputStream(file);

finputstream.read(content);

finputstream.close();

imgBase64= new String(Base64.encodeBase64(content));

// imgBase64= Base64Img.Bitmap2StrByBase64(bitmap);

if(imgBase64!=null||!imgBase64.equals("")){

PreferenceUtils.modifyStringValueInPreferences(CardActivity.this, Preferences.IMAGE_3, null);

}

} catch(IOException e){

e.printStackTrace();

return;

}

//获取服务

RpcService rpcService= ApiGatewayClient.getRpcService();

final ApiRequest apiRequest= new ApiRequest();

//设置请求地址、Path及Method

apiRequest.setAddress("");

apiRequest.setPath("/rest/160601/ocr/ocr_idcard.json");

apiRequest.setMethod(HttpMethod.POST);

//按照文档设置二进制形式Body,支持设置Query参数、Header参数、Form形式Body

apiRequest.setStringBody("{\"inputs\":[{\"image\":{\"dataType\":50,\"dataValue\":\""+imgBase64+"\"},\"configure\":{\"dataType\":50,\"dataValue\":\"{\\\"side\\\":\\\"face\\\"}\"}}]}");

//设置支持自签等形式的证书,如果服务端证书合法请勿设置该值,仅在开发测试或者非常规场景下设置。

apiRequest.setTrustServerCertificate(true);

//设置超时

apiRequest.setTimeout(10000);

rpcService.call(apiRequest, new ApiResponseCallback(){

@Override

public void onSuccess(ApiResponse apiResponse){

//处理apiResponse

LoadingUtil.dismiss();

String s= apiResponse.getStringBody();

NumBean result= JSONObject.parseObject(s, NumBean.class);

String dataValue= result.getOutputs().get(0).getOutputValue().getDataValue();

DataValueBean dataValueBean= JSONObject.parseObject(dataValue, DataValueBean.class);

Number= dataValueBean.getNum();

name= dataValueBean.getName();

address= dataValueBean.getAddress();

birth= dataValueBean.getBirth();

nationality= dataValueBean.getNationality();

sex= dataValueBean.getSex();

if(dataValueBean.getError_msg()==null){

runOnUiThread(new Runnable(){

public void run(){

if(Number== null||Number.equals("")||name== null||name.equals("")||address== null||address.equals("")||birth== null||birth.equals("")||sex== null||sex.equals("")){

Toast.makeText(CardActivity.this,"扫描失败,请重试", Toast.LENGTH_LONG).show();

}else{

//扫描成功

}

}

});

}else{

errString= dataValueBean.getError_msg();

runOnUiThread(new Runnable(){

public void run(){

Toast.makeText(CardActivity.this,"扫描失败,请重试", Toast.LENGTH_LONG).show();

}

});

}

}

@Override

public void onException(ApiInvokeException e){

//处理异常

LoadingUtil.dismiss();

runOnUiThread(new Runnable(){

public void run(){

Toast.makeText(CardActivity.this,"扫描失败,请重试", Toast.LENGTH_LONG).show();

}

});

}

});

}

}

附:

public class NumBean implements Serializable{

private List<OutputsBean> outputs;

public List<OutputsBean> getOutputs(){

return outputs;

}

public void setOutputs(List<OutputsBean> outputs){

this.outputs= outputs;

}

public static class OutputsBean{

private String outputLabel;

private OutputMultiBean outputMulti;

private OutputValueBean outputValue;

public String getOutputLabel(){

return outputLabel;

}

public void setOutputLabel(String outputLabel){

this.outputLabel= outputLabel;

}

public OutputMultiBean getOutputMulti(){

return outputMulti;

}

public void setOutputMulti(OutputMultiBean outputMulti){

this.outputMulti= outputMulti;

}

public OutputValueBean getOutputValue(){

return outputValue;

}

public void setOutputValue(OutputValueBean outputValue){

this.outputValue= outputValue;

}

public static class OutputMultiBean{

}

public static class OutputValueBean{

private int dataType;

private String dataValue;

public int getDataType(){

return dataType;

}

public void setDataType(int dataType){

this.dataType= dataType;

}

public String getDataValue(){

return dataValue;

}

public void setDataValue(String dataValue){

this.dataValue= dataValue;

}

}

}

}

public class DataValueBean implements Serializable{

private String address;

private String birth;

private String config_str;

private String error_msg;

private String name;

private String nationality;

private String num;

private String request_id;

private String sex;

private boolean success;

public String getAddress(){

return address;

}

public void setAddress(String address){

this.address= address;

}

public String getBirth(){

return birth;

}

public void setBirth(String birth){

this.birth= birth;

}

public String getConfig_str(){

return config_str;

}

public void setConfig_str(String config_str){

this.config_str= config_str;

}

public String getError_msg(){

return error_msg;

}

public void setError_msg(String error_msg){

this.error_msg= error_msg;

}

public String getName(){

return name;

}

public void setName(String name){

this.name= name;

}

public String getNationality(){

return nationality;

}

public void setNationality(String nationality){

this.nationality= nationality;

}

public String getNum(){

return num;

}

public void setNum(String num){

this.num= num;

}

public String getRequest_id(){

return request_id;

}

public void setRequest_id(String request_id){

this.request_id= request_id;

}

public String getSex(){

return sex;

}

public void setSex(String sex){

this.sex= sex;

}

public boolean isSuccess(){

return success;

}

public void setSuccess(boolean success){

this.success= success;

}

}

在AndroidManifest.xml下添加

<meta-data android:name="com.alibaba.apigateway.appKey" android:value=""/>

<meta-data android:name="com.alibaba.apigateway.appSecret" android:value=""/>

阿里云 免费 ssl证书 和付费ssl证书的区别

任何东西都是有成本的,免费的域名型DVSSL证书也一样。它需要花费您大量的时间,且需要您具有专业的技术,还不能享受付费DVSSL证书所能提供的有价值的附加功能。

阿里云官方的解释,下图为阿里云官网截图:

免费证书:个人及测试使用保护网站仅DV SSL证书不支持弱强度低备兼容性差(不兼容xp低版本客户端,安卓4.0及其以下的客户端,JDK1.6及其以下客户端),部分浏览器受限(不支持部分国产及低版本浏览器)。有的免费SSL证书,例如Let's Encrypt Authority X3甚至不被市场占有率很大的360浏览器信任,至今仍没在360浏览器信任列表里面。

为什么要使用SSL证书?

1、安全:可实现用户到网站之间的高强度加密传输;

2、信任:如果网站访问者信任您的品牌和网站安全性,他们更有可能在该网站进行交易;

3、有助于优化网站SEO排名,部署SSL证书的网站在搜索引擎排名上更具优势。

付费商用SSL证书的优势:

付费SSL证书有专业的技术支持和指导,可以帮助您快速地将SSL证书部署到您的网站;

付费SSL证书具有更长的使用寿命,可购买2年,可节省时间和精力,而免费DVSSL证书有效期为90天,需频繁更新;

付费SSL证书有到期提醒服务,包括系统提醒和人工提醒,确保用户知悉证书到期时间,然后做出对应的续费手续。

免费的DVSSL证书从眼前看节约成本,但却有隐藏的代价,选择部署SSL证书对于任何网站、博客等都是正确的,但选择正确的SSL证书将影响您的声誉、转化率、可用时间和网站的安全性。

阿里云服务器ecs怎样搭建网站

看到这么多回答,也讲的比较细致了。我再来个相对比较简单好用的一键部署WordPress搭建流程。

关于怎么购买阿里云服务器以及域名这里就不写了。可以先去阿里云官网领取代金券,然后再买,划算些。

下面写写拥有云服务器和域名后,如何开始搭建一个WordPress博客网站:

用阿里云服务器搭建一个WordPress网站主要有以下几种方式:

第一种,在购买的时候镜像选择“镜像市场”里面的linux+wordpress版本,也就是已经提前安装了特定环境的版本。登陆云服务器后,就可以直接开始安装配置WordPress了。

第二种,镜像选择“公共镜像”里的linux系统(比如centos7),然后手动配置好服务器环境,再安装WordPress。

第三种,也是最简单,比较推荐新手使用的一种,就是选择“公共镜像”里的linux系统后,云服务器里什么都不要安装,使用纯净的系统,一键安装宝塔面板,然后登陆宝塔面板,可视化操作,一键部署环境和安装WordPress。

下面详细讲讲第三种方法:

在购买云服务器时,地域选择国内是需要备案的,选择中国香港或者海外服务器是不需要备案的。

云服务器内存建议在4G或者以上(避免卡顿的情况),操作系统建议选择CentOS7版本,如下图

下面说说用阿里云服务器建立个人网站(以WordPress为例)的具体流程:

搭建之前,请先将你的域名解析到云服务器公网ip,新手可以选择“快速添加网站解析”,如下图:

1.购买好云服务器后,登陆到你的控制台,找到你购买的“云服务器”,登陆进去。

2.这时候应该打开了云服务器的命令行终端(阿里云或腾讯云登陆后都是一样的),我们只需把下面一行代码输入,然后按回车键即可。

yum install-y wget&& wget-O install.sh ; sh install.sh

3.我们耐心等待一会儿,等宝塔面板自动安装完成(中间若出现是否安装*Y/N?时,我们只需要输入y就行了)。

安装完成后,我们接着再命令行输入bt,这个时候就会显示面板的使用帮助菜单选项。

bt

4.这时候我们输入数字14,就能看到宝塔面板的登录地址还有用户名和密码。

5.我们把登录地址复制到浏览器打开,输入用户名和密码,进入到宝塔面板的后台管理页面。一般来说,首次登陆进来面板后,会自动推荐你安装环境套件,这里有两种选择,第一种是LNMP套件,第二种是LAMP套件。如图(建议选择一键安装LNMP)

6.为安全起见,建议修改你的用户名和密码,以及面板默认端口。

注意:修改面板端口之前,记得在你的阿里云或者腾讯云控制台,找到你的云服务器,在“安全组”一栏下修改规则,选择入站规则下的“添加规则”。

关于其他的安全设置,我们下一篇文章再讲,这里就先设置到这里。

7.下面我们开始来一键部署WordPress建站程序,(提示:如果前面你没有安装LNMP环境或者LAMP环境,也不要着急,我们可以在软件搜索步骤5列出的几个套件手动安装),点击面板左侧“软件商店”,然后找到WordPress,选择一键部署。

8.输入你的网站信息,即你的域名。另外,为了避免出现不可知的错误,新手建议不要修改默认创建的数据库名和命令,自己把它存储好就行。(当点击提交后,系统会自动列出数据库名和密码以及网站地址,请保存好这些信息,后面进入WordPress安装需要填写)

9.在线安装WordPress网站程序的时候,先选择语言“简体中文”,然后填写数据库名和密码(就是上一步叫你保存的)

10.中间几步省略了,安装步骤填写就行。安装完成后,登陆你的Wordpress管理后台。(后台登陆地址为:你的网址或ip/wp-admin)

11.到这里,你的WordPress网站就搭建成了。接着你可以去发布文章或更换主题,以及后期的维护等等,这里就不细说了。

12.最后,如何在宝塔面板管理添加站点呢。点击左侧“网站”,选择右边的“添加站点”。接着在弹出的窗口里,填写好你的新站点信息即可。(如果只是部署静态网站的话,就不需要创建数据库)

13.然后访问你的网站地址就会显示创建成功!

14.接着你可以将你的静态网站源码上传到你的网站目录里,也可以手动部署WordPress网站(需要在上一步里创建数据库)。

15.当然,如果你要做的是Wordpress网站,那么建议你先不要添加站点(即省略以上添加站点的步骤),直接在面板左侧“软件商店”选择一键

部署WordPress即可(这时会帮你自己创建数据库,或者手动更改也行),同时也会自动创建站点,部署WordPress成功后,回到你的“网站”目录里就可以看到自己的站点了。

阅读剩余
THE END