SinaStockInfo
来源:互联网 发布:手机数据为啥自动打开 编辑:程序博客网 时间:2024/06/05 05:06
spring mvc请求新浪股票代码
@RequestMapping(value = "/xx/getStockinfo.htm")
@ResponseBody
public List<StockInfoVo> getStock(String symbol) throws Exception {
// SendURLUtil.sendURL("http://qt.gtimg.cn/q=" + symbol,
// "gb2312");
List<StockInfoVo> list = new ArrayList<StockInfoVo>();
String returnStr = SendURLUtil.sendURL("http://hq.sinajs.cn/list=" + symbol, "gbk");
if (returnStr == null) {
return list;
}
String[] source = returnStr.split(";");
for (int i = 0, len = source.length; i < len; i++) {
if (source[i] != null) {
int start = source[i].indexOf('\"');
String targetString = source[i].substring(start + 1, source[i].length() - 1);
String[] infoStr = targetString.split(",");
if (infoStr.length > 4) {
float mNowPrice = Float.parseFloat(infoStr[3]);
float yestodayPrice = Float.parseFloat(infoStr[2]);
format.setMinimumFractionDigits(2);// 设置小数位
StockInfoVo vo = new StockInfoVo();
vo.setName(infoStr[0]);
vo.setNowPrice(infoStr[3]);
if (mNowPrice == 0.00) {
vo.setPriceRange("0.00%");
} else {
vo.setPriceRange(format.format((mNowPrice - yestodayPrice) / yestodayPrice));
}
list.add(vo);
}
}
}
return list;
}
/**
* 新浪股票信息。*
*
*/
public class SinaStockInfo {
// 股票名字
private String mName;
// 今日开盘价
private float mTodayPrice;
// 昨日收盘价
private float mYestodayPrice;
// 当前价
private float mNowPrice;
// 今日最高价
private float mHighestPrice;
// 今日最低价
private float mLowestPrice;
// 买一价
private float mBuy1Price;
// 卖一价
private float mSell1Price;
// 成交股票数,单位“股”。100股为1手。
private long mTradeCount;
// 成交额,单位“元”。一般需要转换成“万元”。
private long mTradeMoney;
// 买单情况
private BuyOrSellInfo[] mBuy;
// 卖单情况
private BuyOrSellInfo[] mSell;
// 日期
private String mDate;
// 时间
private String mTime;
private SinaStockInfo(String name, float todayPrice, float yestodayPrice, float nowPrice, float highestPrice,
float lowestPrice, float buy1Price, float sell1Price, long tradeCount, long tradeMoney,
BuyOrSellInfo[] buy, BuyOrSellInfo[] sell, String date, String time) {
mName = name;
mTodayPrice = todayPrice;
mYestodayPrice = yestodayPrice;
mNowPrice = nowPrice;
mHighestPrice = highestPrice;
mLowestPrice = lowestPrice;
mBuy1Price = buy1Price;
mSell1Price = sell1Price;
mTradeCount = tradeCount;
mTradeMoney = tradeMoney;
mBuy = buy;
mSell = sell;
mDate = date;
mTime = time;
}
/**
* 从一行响应字符串中解析得到SinaStockInfo数据结构。
*
* @param source
* 参数的格式如: var hq_str_sh601006=
* "大秦铁路,7.69,7.70,7.62,7.72,7.61,7.61,7.62,46358694,355190642,565201,7.61,984000,7.60,211900,7.59,476600,7.58,238500,7.57,295518,7.62,217137,7.63,241500,7.64,345900,7.65,419400,7.66,2012-02-29,15:03:07"
* ;
*
* @return SinaStockInfo
* @throws ParseStockInfoException
*/
public static SinaStockInfo parseStockInfo(String source) throws ParseStockInfoException {
int start = source.indexOf('\"');
String targetString = source.substring(start + 1, source.length() - 2);
String[] infoStr = targetString.split(",");
if (infoStr.length != 33) {
throw new ParseStockInfoException();
}
final String name = infoStr[0];
final float todayPrice = Float.parseFloat(infoStr[1]);
final float yestodayPrice = Float.parseFloat(infoStr[2]);
final float nowPrice = Float.parseFloat(infoStr[3]);
final float highestPrice = Float.parseFloat(infoStr[4]);
final float lowestPrice = Float.parseFloat(infoStr[5]);
final float buy1Price = Float.parseFloat(infoStr[6]);
final float sell1Price = Float.parseFloat(infoStr[7]);
final long tradeCount = Long.parseLong(infoStr[8]);
final long tradeMoney = Long.parseLong(infoStr[9]);
BuyOrSellInfo buy1 = new BuyOrSellInfo(Long.parseLong(infoStr[10]), Float.parseFloat(infoStr[11]));
BuyOrSellInfo buy2 = new BuyOrSellInfo(Long.parseLong(infoStr[12]), Float.parseFloat(infoStr[13]));
BuyOrSellInfo buy3 = new BuyOrSellInfo(Long.parseLong(infoStr[14]), Float.parseFloat(infoStr[15]));
BuyOrSellInfo buy4 = new BuyOrSellInfo(Long.parseLong(infoStr[16]), Float.parseFloat(infoStr[17]));
BuyOrSellInfo buy5 = new BuyOrSellInfo(Long.parseLong(infoStr[18]), Float.parseFloat(infoStr[19]));
BuyOrSellInfo sell1 = new BuyOrSellInfo(Long.parseLong(infoStr[20]), Float.parseFloat(infoStr[21]));
BuyOrSellInfo sell2 = new BuyOrSellInfo(Long.parseLong(infoStr[22]), Float.parseFloat(infoStr[23]));
BuyOrSellInfo sell3 = new BuyOrSellInfo(Long.parseLong(infoStr[24]), Float.parseFloat(infoStr[25]));
BuyOrSellInfo sell4 = new BuyOrSellInfo(Long.parseLong(infoStr[26]), Float.parseFloat(infoStr[27]));
BuyOrSellInfo sell5 = new BuyOrSellInfo(Long.parseLong(infoStr[28]), Float.parseFloat(infoStr[29]));
final String date = infoStr[30];
final String time = infoStr[31];
SinaStockInfo stockInfo = new SinaStockInfo(name, todayPrice, yestodayPrice, nowPrice, highestPrice,
lowestPrice, buy1Price, sell1Price, tradeCount, tradeMoney, new BuyOrSellInfo[] { buy1, buy2, buy3,
buy4, buy5 }, new BuyOrSellInfo[] { sell1, sell2, sell3, sell4, sell5 }, date, time);
return stockInfo;
}
/**
* 获取股票名称
*
* @return 股票名称
*/
public String getName() {
return mName;
}
/**
* 获取今日开盘价
*
* @return 今日股票开盘价
*/
public float getTodayPrice() {
return mTodayPrice;
}
/**
* 获取昨日收盘价
*
* @return 昨日收盘价
*/
public float getYestodayPrice() {
return mYestodayPrice;
}
/**
* 获取当前股价
*
* @return 当前股价
*/
public float getNowPrice() {
return mNowPrice;
}
/**
* 获取今日最高价
*
* @return 今日最高价
*/
public float getHighestPrice() {
return mHighestPrice;
}
/**
* 获取今日最低价
*
* @return 今日最低价
*/
public float getLowestPrice() {
return mLowestPrice;
}
/**
* 获取股票交易量。单位为“股”,100股为1手,请注意转换。
*
* @return 股票交易量
*/
public long getTradeCount() {
return mTradeCount;
}
/**
* 获取股票交易额。单位为“元”,如需显示“万元”,请注意转换。
*
* @return 股票交易额
*/
public long getTradeMoney() {
return mTradeMoney;
}
/**
* 获取买手信息。
*
* @return 买手信息。数组从前到后依次为:买一、买二、买三、买四、买五。
*/
public BuyOrSellInfo[] getBuyInfo() {
return mBuy;
}
/**
* 获取卖手信息。
*
* @return 卖手信息。数组从前到后依次为:卖一、卖二、卖三、卖四、卖五。
*/
public BuyOrSellInfo[] getSellInfo() {
return mSell;
}
/**
* 获取对应股票信息的日期。例如周末,或者其他休市期间获取的数据将不是实时的。
*
* @return 获取对应股票信息的日期。
*/
public String getDate() {
return mDate;
}
/**
* 获取对应股票信息的时间。例如周末,或者其他休市期间获取的数据将不是实时的。
*
* @return 获取对应股票信息的时间。
*/
public String getTime() {
return mTime;
}
public static class ParseStockInfoException extends Exception {
public ParseStockInfoException() {
super("Parse StockInfo error!");
}
}
@Override
public String toString() {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
sb.append("股票名称: " + getName() + "\n");
sb.append("今日开盘价: " + getTodayPrice() + "元\n");
sb.append("昨日收盘价: " + getYestodayPrice() + "元\n");
sb.append("当前股价: " + getNowPrice() + "元\n");
sb.append("今日最高价: " + getHighestPrice() + "元\n");
sb.append("今日最低价: " + getLowestPrice() + "元\n");
sb.append("今日交易量: " + getTradeCount() + "股\n");
sb.append("今日成交量: " + getTradeMoney() + "元\n");
BuyOrSellInfo[] buy = getBuyInfo();
sb.append("买一:\n" + buy[0] + "\n");
sb.append("买二:\n" + buy[1] + "\n");
sb.append("买三:\n" + buy[2] + "\n");
sb.append("买四:\n" + buy[3] + "\n");
sb.append("买五:\n" + buy[4] + "\n");
BuyOrSellInfo[] sell = getSellInfo();
sb.append("卖一:\n" + sell[0] + "\n");
sb.append("卖二:\n" + sell[1] + "\n");
sb.append("卖三:\n" + sell[2] + "\n");
sb.append("卖四:\n" + sell[3] + "\n");
sb.append("卖五:\n" + sell[4] + "\n");
sb.append("时间: " + getTime() + "\n");
sb.append("日期: " + getDate() + "\n");
return sb.toString();
}
// 买单或卖单信息。
private static class BuyOrSellInfo {
// 数量。单位为“股”。100股为1手。
long mCount;
// 价格。
float mPrice;
public BuyOrSellInfo(long count, float price) {
mCount = count;
mPrice = price;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("数量: " + mCount + "股 ");
sb.append("价格: " + mPrice + "元");
return sb.toString();
}
}
}
- SinaStockInfo
- 论Nim中的 proc 和 method
- linux 下安装mysql
- 使用了scriptmanager,同时用了CheckBoxList,实现CheckBoxList单选
- swift 使用 AFHTTPRequestOperationManager
- 单选框 多选框取值
- SinaStockInfo
- cocos2d-x游戏开发(十五)游戏加载动画loading界面
- 面向对象的内存分配
- JPA + Tomcat + JNDI数据源持久化配置
- Windows下让Apache与IIS共用80端口使支持ASP
- LightOJ 1422 Halloween Costumes (区间DP)
- 自已实现一个UI库-UI核心绘图层管理
- cocos2d-x游戏开发(十六)帧动画
- 智能储物柜/快递柜系统解析<一>