阿里云 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成功后,回到你的“网站”目录里就可以看到自己的站点了。