2010-03-16 3 views
1

Я пытаюсь отправить сообщения, сгенерированные кодом буфера протокола Google, с помощью простой HTTP-схемы на сервер. То, что я в настоящее время внедрил здесь (простите очевидную незавершенность ...):Эффективная отправка сообщений буфера протокола с http на платформе android

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) { 

} 

Я не то, что опыт работы с связи через Интернет и не более с HTTP - в то время как я понимаю основы. Итак, мой вопрос, прежде чем я слепо развить остальную часть приложения вокруг этого, является ли это особенно эффективным? Я идеально хотел бы держать сообщения маленькими, и я предполагаю, что toString() добавляет ненужное форматирование.

+0

На самом деле это был глупый способ сделать это ... aargh ... что лучше? –

+0

Я предполагаю, что это сработало; рад, что я мог помочь. :) – tzaman

ответ

2

Message.toString() распечатывает текстовое (несериализованное) представление. Вероятно, вы захотите использовать ToByteString() или ToByteArray(), чтобы получить сериализованную версию, которую вы затем можете передать своему URLencoder.
Конечно, это потребует некоторых накладных расходов для кодирования URL. Если вы можете обрабатывать POST-файлы с многостраничными/формами данных, тогда вы можете просто присоединить байты непосредственно в виде файловой части, с application/octet-stream MIME-type; таким образом вы будете отправлять наименьшее возможное сообщение, и вам не придется беспокоиться о кодировании/декодировании URL с обоих концов.