WEB开发网
开发学院手机开发Android 开发 android 开发网络程序 阅读

android 开发网络程序

 2010-09-14 23:41:00 来源:WEB开发网   
核心提示:此 Activity 设置了 清单 1 中 XML 文件的布局,它将几个事件处理程序连接起来,android 开发网络程序(4),首先,对于 Add Stock 按钮而言,该服务器将返回作为文本的串行化的股票数据,对于 protocol buffers 而言,代码读取文本框中的代码并将其添加到 symList Text

此 Activity 设置了 清单 1 中 XML 文件的布局,它将几个事件处理程序连接起来。首先,对于 Add Stock 按钮而言,代码读取文本框中的代码并将其添加到 symList TextView 中,用逗号分隔每个代码。接下来,对于 Download 按钮而言,处理程序从 symList TextView 中读取数据,然后 —基于 mode 变量— 使用三个不同的类之一从服务器下载数据。菜单设置 mode 变量的值;这个代码不是很重要,因此我在 清单 2 中省略了它。在了解各种数据下载/解析类之前,我先为您展示一下服务器如何提供此数据。

回页首

提供股票数据

应用程序服务器需要能够做两件事。第一,它必须获取股票代码列表并检索它们的数据。然后,它需要接受一个格式参数并基于该格式编码数据。对于 XML 和 JSON 格式而言,该服务器将返回作为文本的串行化的股票数据。对于 protocol buffers 而言,它必须发送二进制数据。 清单 3 显示了处理这些步骤的 servlet:

清单 3. Stock Broker servlet


public class StockBrokerServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException {
String[] symbols = request.getParameterValues("stock");
List<Stock> stocks = getStocks(symbols);
String format = request.getParameter("format");
String data = "";
if (format == null || format.equalsIgnoreCase("xml")){
data = Stock.toXml(stocks);
response.setContentType("text/xml");
} else if (format.equalsIgnoreCase("json")){
data = Stock.toJson(stocks);
response.setContentType("application/json");
} else if (format.equalsIgnoreCase("protobuf")){
Portfolio p = Stock.toProtoBuf(stocks);
response.setContentType("application/octet-stream");
response.setContentLength(p.getSerializedSize());
p.writeTo(response.getOutputStream());
response.flushBuffer();
return;
}
response.setContentLength(data.length());
response.getWriter().print(data);
response.flushBuffer();
response.getWriter().close();
}

public List<Stock> getStocks(String... symbols) throws IOException{
StringBuilder sb = new StringBuilder();
for (String symbol : symbols){
sb.append(symbol);
sb.append('+');
}
sb.deleteCharAt(sb.length() - 1);
String urlStr =
"http://finance.yahoo.com/d/quotes.csv?f=sb2n&s=" +
sb.toString();
URL url = new URL(urlStr);
HttpURLConnection conn =
(HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String quote = reader.readLine();
List<Stock> stocks = new ArrayList<Stock>(symbols.length);
while (quote != null){
String[] values = quote.split(",");
Stock s =
new Stock(values[0], values[2],
Double.parseDouble(values[1]));
stocks.add(s);
quote = reader.readLine();
}
return stocks;
}
}

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:android 开发 网络

编辑录入:coldstar [复制链接] [打 印]
赞助商链接