request - 如何将加密(3DES)数据发送到渡槽而不会出现任何错误?
问题描述
我正在使用渡槽 3.0。我需要学习如何在 Aqueduct 3.0 中捕获发布请求?
我的要求: http: //127.0.0.1 :8888/login/ziD7v0Ul99vmNWnxJRxZIiTY4zakNoq8GjM+oHROYz/YTHnd3NH1XfHRULY0jaHU
获得响应:[INFO] 渡槽:GET /login/ziD7v0Ul99vmNWnxJRxZIiTY4zakNoq8GjM+oHROYz/YTHnd3NH1XfHRULY0jaHU 11ms 404
我的 channel.dart 路由
// TODO: connect to Socket **********
router.route('/login/[:value]').link(() {
return new LoginController();
//..contentType = ContentType.TEXT;
});
我的 LoginController.dart
import 'package:aqueduct/aqueduct.dart';
import 'package:niyaziapi/niyaziapi.dart';
import 'package:niyaziapi/util/niyaziGetPrivate.dart';
import 'package:niyaziapi/util/niyaziSetPrivate.dart';
class LoginController extends Controller {
String _xCustomerToken;
String _xCustomerName;
String _xPrivate;
String _xResult;
String _xRequestValue;
String _xReply;
@override
Future<RequestOrResponse> processRequest(Request request) async {
String tempData = request.toString();
print("tempDate: $tempData"); // can’t print
try {
if (request.path.variables.containsKey('value')) {
_xPrivate = (request.path.variables['value']).trim();
print("_xPrivate: $_xPrivate");
var decryptedData = await getPrivate(_xPrivate);
var decryptedList = decryptedData.split(":_:");
decryptedData = null;
decryptedData = "Q101:_:" + decryptedList[2].toString() + ":_:" + decryptedList[3].toString();
print(decryptedData);
var socket = await Socket.connect('192.168.1.22', 1024);
socket.write("$decryptedData\r\n");
await for (var data in socket) {
_xReply = new String.fromCharCodes(data).trim();
var list = _xReply.split(":_:");
_xCustomerToken = list[2].toString();
_xCustomerName = list[3].toString();
});
_xResult = "$_xCustomerToken:_:$_xCustomerName";
var encryptedData = await setPrivate(_xResult);
return new Response.ok("$encryptedData");
}
} else {
return new Response.ok("404: Wrong Request");
}
} catch (e) {
return new Response.ok("404: $e.errorMessage");
}
}
}
当我测试时,我发现我的代码有效。我发送 3DES 数据并包含 + 和 / 字符的唯一原因。
如果您在第一个请求中仔细查看,数据中有一个 + 和 / 字符,这会给我一个错误。/login/ziD7v0Ul99vmNWnxJRxZIiTY4zakNoq8GjM+oHROYz/YTHnd3NH1XfHRULY0jaHU 19ms 404
另一方面,如果我删除这些角色,我会得到完美的回应。
/login/ziD7v0Ul99vmNWnxJRxZIiTY4zakNoq8GjMoHROYzYTHnd3NH1XfHRULY0jaHU 13 毫秒 200
那么,问题来了如何将加密(3DES)数据发送到渡槽而不会出现任何错误?
解决方案
去喜欢渡槽两次:)
这很简单: var _xPrivate = (request.path.variables['value']).trim(); 改成:
var _xPrivate = request.path.remainingPath;
print("request: $_xPrivate");
推荐阅读
- python - raise ValueError('无法设置没有定义索引的框架' ValueError:
- java - 在java中合并两个具有相同键的地图
- android-studio - Android Studio Profiler 在 ubuntu 16.04 中非常滞后
- android - 如何使用 jks 文件更新 Android 应用程序?
- c# - SonarQube 分析任务更改构建的输出
- javascript - 是否可以制作一个触发 PWA“添加到主屏幕”安装横幅的应用内按钮?
- c# - MS Bot 框架中的自动填充选项
- assembly - 如何在 nasm 中为 BIN 文件创建 ELF 子系统?
- android - 适用于 API 10 的 AppCompatV7 最新版本
- node.js - Angular 4 - 使用 http 请求检测连接问题