Я использую Акведук 3.0. Мне нужно узнать, как перехватить почтовый запрос в Акведуке 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;
});
my 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 19 мс 404
с другой стороны, если я удалю этого персонажа, я получу идеальный ответ.
/ login / ziD7v0Ul99vmNWnxJRxZIiTY4zakNoq8GjMoHROYzYTHnd3NH1XfHRULY0jaHU 13 мс 200
Итак, возникает вопрос, как отправить зашифрованные (3DES) данные в акведук без каких-либо ошибок?