Invio in modo efficiente i messaggi di buffer del protocollo con HTTP su una piattaforma Android
-
20-09-2019 - |
Domanda
Sto cercando di inviare messaggi generati dal codice buffer di protocollo di Google tramite un semplice schema HTTP a un server. Quello che ho attualmente implementato è qui (perdona l'ovvia incompletezza ...):
HttpClient client = new DefaultHttpClient();
String url = "http://192.168.1.69:8888/sdroidmarshal";
HttpPost postRequest = new HttpPost(url);
String proto = offers.build().toString();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("sdroidmsg", proto));
postRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs));
try {
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = client.execute(postRequest, responseHandler);
} catch (Throwable t) {
}
Non sono così esperto con le comunicazioni su Internet e non più con HTTP - mentre capisco le basi ... quindi la mia domanda, prima di sviluppare ciecamente il resto dell'applicazione attorno a questo, è se questo è particolarmente efficiente? Idealmente vorrei mantenere i messaggi piccoli e presumo che ToString () aggiunga una formattazione inutile.
Soluzione
Message.toString()
Stampa la rappresentazione testuale (non serializzata). Probabilmente vuoi usare ToByteString()
o ToByteArray()
Per ottenere la versione serializzata, che puoi quindi passare al tuo Urlencoder.
Naturalmente, ciò dovrà sostenere un po 'di sovraccarico per la codifica URL. Se è possibile gestire i post in stile multipart/moduli, puoi semplicemente collegare i byte direttamente come una parte di file, con application/octet-stream
Tipo mime; In questo modo invierai il messaggio più piccolo possibile e non dovrai preoccuparti della codifica / decodifica degli URL alle due estremità.