Мое приложение флаттера подключается к сокету через https, и я использую акведук для получения защищенных данных.данные сокета представляют собой строку полной длины, например:
2_7 # a_b_c_d_e_f_g # h_i_j_k_l_m_n #
Я преобразую данные в json, и мои данные json выглядят следующим образом: "{data: 2_7 # a_b_c_d_e_f_g_h_h_h_h_h_g#} "
и отправлено в приложение флаттера.2_7 # означает, что у меня есть 2 строки и 7 столбцов.Исходные данные сокета сервера 152_7 #, что означает, что у меня 152 строки с 7 столбцами.
когда я пытаюсь получить эти данные (152_7 #) с помощью сокета в акведуке, я получаю только 12 строк, а иногда и 25 строк.
Если данные сервера короткие, я получаю все из них, но могуполучить большие строковые данные.
мой вопрос, как получить полные данные, используя акведук и сокет?
import 'package:aqueduct/aqueduct.dart';
import 'package:ntmsapi/ntmsapi.dart';
Socket socket;
String _reply;
var _secureResponse;
var _errorData;
class NtmsApiController extends Controller {
@override
Future<RequestOrResponse> handle(Request request) async {
try {
String _xRequestValue = "";
_reply = "";
_errorData = "Server_Error";
if (request.path.remainingPath != null) {
_xRequestValue = request.path.remainingPath;
// returns a string like 152 row with 11 column
socket = await Socket.connect('192.168.xxx.xxx’, 8080);
socket.write('$_xRequestValue\r\n');
socket.handleError((data) {
_secureResponse = "$_errorData";
});
await for (var data in socket) {
// _cant get all the data from reply, reply shows about 25 row data
_reply = new String.fromCharCodes(data).trim();
_secureResponse = "$_reply";
socket.close();
socket.destroy();
}
} else {
_secureResponse = "$_errorData";
}
} catch (e) {
_secureResponse = "$_errorData";
}
return new Response.ok("$_secureResponse")
..contentType = ContentType.json;
}
}