阿里云调用 API 服务后返回什么结果

阿里云调用 API 服务后返回什么结果,第1张

你好!

你的服务器降低的是什么配置,如果是防御,那么不会,如果他降的是你的内存,那是有可能把你的数据弄掉了,当然,还有就是出现后台误删的情况,或者是服务器不稳定导致数据包丢失,我用的小鸟云服务器,不懂的可以问下他们客服。各种情况,楼主你自己对着分析

1、CPU更好,II系列是E5-2680,而I最高是E5-2650

2、内存更快, II系列是第四代(其实感觉不到什么差别)

3、存储上,II系列默认就是IO优化了的。I需要单独选IO优化。

如果你购买I的IO优化,最后算下来,买II多花不到什么钱。

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

准备工作:在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("https://dm-51.data.aliyun.com")

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="" />


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/372881.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存