我正在尝试通过简单的HTTP方案将Google协议缓冲区代码生成的消息发送到服务器。我目前已经实现的是(原谅显而易见的未完成......):
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 :(得分:2)
Message.toString()
打印出文本(非序列化)表示。您可能希望使用ToByteString()
或ToByteArray()
来获取序列化版本,然后将其传递给您的URLencoder。
当然,这会产生URL编码的一些开销。如果您可以处理多部分/表单数据样式的POST,那么您可以直接将字节作为文件部分附加,使用application/octet-stream
MIME类型;这样你将发送尽可能小的消息,并且不必担心任何一端的URL编码/解码。