Android 与 AWS SageMaker 与 AWS Lambda 之间的连接
Connection between Android and AWS SageMaker with AWS Lambda
我在 Android 和 AWS Lambda 之间建立了连接,该连接的端点设置为 SageMaker。我在连接期间使用 REST API,AWS Cognito 插件设置为未经授权访问。
我的问题是如何发送这些数据:
{"data":"13.49,22.3,86.91,561.0,0.08752,0.07697999999999999,0.047510000000000004,0.033839999999999995,0.1809,0.057179999999999995,0.2338,1.3530000000000002,1.735,20.2,0.004455,0.013819999999999999,0.02095,0.01184,0.01641,0.001956,15.15,31.82,99.0,698.8,0.1162,0.1711,0.2282,0.1282,0.2871,0.06917000000000001"}
以及稍后如何查看收到的回复。任何人都知道如何做或我在哪里可以找到如何做的提示?
如果我没理解错的话,你的系统流程是这样的:
POST
来自您的 Android 设备的一些数据
- 它被 API 网关接收
- 并继续到 AWS Lambda
- 在 AWS Lambda 中提取数据,并传递给 Sage Maker
使用 AWS Amplify
创建 POST
要从 Android 设备获取 POST
数据,请遵循 Amplify API (REST) category documentation。
具体来说,您可以执行以下操作:
val options = RestOptions.builder()
.addPath("/prod/predictbreastcancer")
.addBody("{\"data\":\"13.49,22.3,86.91,561.0,0.08752,0.07697999999999999,0.047510000000000004,0.033839999999999995,0.1809,0.057179999999999995,0.2338,1.3530000000000002,1.735,20.2,0.004455,0.013819999999999999,0.02095,0.01184,0.01641,0.001956,15.15,31.82,99.0,698.8,0.1162,0.1711,0.2282,0.1282,0.2871,0.06917000000000001\"}".toByteArray())
.build()
Amplify.API.post(options,
{ Log.i("Demo", "POST response = $it") },
{ Log.e("Demo", "POST failed", it) }
)
从 EditText 内容创建 POST 正文
您提到您正在使用 EditText
小部件来收集输入数据。我假设用户可以输入逗号分隔的值列表,例如 0.44, 6.11
,等等
要提取其内容并构建 POST 正文,您可以执行以下操作:
val input = findViewById(R.id.input) as EditText
val body = JSONObject()
.put("data", input.text)
.toString()
.replaceAll("\"", "\\"")
正在另一个 Activity
中显示响应
浏览您引用的博客,我看不到响应正文内容的示例。但是,您可以通过以下方式检索响应 JSON 并将其传递给新的 activity.
Amplify.API.post(options,
{ response ->
val intent = Intent(this, YourOtherActivity::class.java)
intent.putExtra("json", response.data.asString())
runOnUiThread { startActivity(intent) }
},
{ /* handle error ... */ }
)
在YourOtherActivity
中,像这样访问onCreate()
中的额外数据:
val json = intent.getStringExtra("json")
我在 Android 和 AWS Lambda 之间建立了连接,该连接的端点设置为 SageMaker。我在连接期间使用 REST API,AWS Cognito 插件设置为未经授权访问。
我的问题是如何发送这些数据:
{"data":"13.49,22.3,86.91,561.0,0.08752,0.07697999999999999,0.047510000000000004,0.033839999999999995,0.1809,0.057179999999999995,0.2338,1.3530000000000002,1.735,20.2,0.004455,0.013819999999999999,0.02095,0.01184,0.01641,0.001956,15.15,31.82,99.0,698.8,0.1162,0.1711,0.2282,0.1282,0.2871,0.06917000000000001"}
以及稍后如何查看收到的回复。任何人都知道如何做或我在哪里可以找到如何做的提示?
如果我没理解错的话,你的系统流程是这样的:
POST
来自您的 Android 设备的一些数据- 它被 API 网关接收
- 并继续到 AWS Lambda
- 在 AWS Lambda 中提取数据,并传递给 Sage Maker
使用 AWS Amplify
创建 POST要从 Android 设备获取 POST
数据,请遵循 Amplify API (REST) category documentation。
具体来说,您可以执行以下操作:
val options = RestOptions.builder()
.addPath("/prod/predictbreastcancer")
.addBody("{\"data\":\"13.49,22.3,86.91,561.0,0.08752,0.07697999999999999,0.047510000000000004,0.033839999999999995,0.1809,0.057179999999999995,0.2338,1.3530000000000002,1.735,20.2,0.004455,0.013819999999999999,0.02095,0.01184,0.01641,0.001956,15.15,31.82,99.0,698.8,0.1162,0.1711,0.2282,0.1282,0.2871,0.06917000000000001\"}".toByteArray())
.build()
Amplify.API.post(options,
{ Log.i("Demo", "POST response = $it") },
{ Log.e("Demo", "POST failed", it) }
)
从 EditText 内容创建 POST 正文
您提到您正在使用 EditText
小部件来收集输入数据。我假设用户可以输入逗号分隔的值列表,例如 0.44, 6.11
,等等
要提取其内容并构建 POST 正文,您可以执行以下操作:
val input = findViewById(R.id.input) as EditText
val body = JSONObject()
.put("data", input.text)
.toString()
.replaceAll("\"", "\\"")
正在另一个 Activity
中显示响应浏览您引用的博客,我看不到响应正文内容的示例。但是,您可以通过以下方式检索响应 JSON 并将其传递给新的 activity.
Amplify.API.post(options,
{ response ->
val intent = Intent(this, YourOtherActivity::class.java)
intent.putExtra("json", response.data.asString())
runOnUiThread { startActivity(intent) }
},
{ /* handle error ... */ }
)
在YourOtherActivity
中,像这样访问onCreate()
中的额外数据:
val json = intent.getStringExtra("json")