日期:2014-05-16 浏览次数:20453 次
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.SocketTimeoutException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import org.json.JSONException; import org.json.JSONObject; /** * 根据网址,返回编码方式为utf-8的JSONObject对象 * 注:只适合请求响应为json格式网址 * @param src 来源网址 * @author chitianxiang $22th March, 2012 - 2:44 p.m */ static private JSONObject getJsonObj4Utf8(String src) throws Exception { return getJsonObj(src, "utf-8"); } /** * 根据网址,返回JSONObject对象 * 注:只适合请求响应为json格式网址 * @param src 来源网址 * @param code 编码方式 * @author chitianxiang $22th March, 2012 - 2:42 p.m */ static private JSONObject getJsonObj(String src, String code) { InputStreamReader reader = null; BufferedReader in = null; try { URL url = new URL(src); URLConnection connection = url.openConnection(); connection.setConnectTimeout(1000); reader = new InputStreamReader(connection.getInputStream(), code); in = new BufferedReader(reader); String line = null; //每行内容 int lineFlag = 0; //标记: 判断有没有数据 StringBuffer content = new StringBuffer(); while ((line = in.readLine()) != null) { content.append(line); lineFlag++; } return lineFlag == 0 ? null : new JSONObject(content.toString()); } catch (SocketTimeoutException e) { System.out.println("连接超时!!!"); return null; } catch (JSONException e) { System.out.println("网站响应不是json格式,无法转化成JSONObject!!!"); return null; } catch (Exception e) { System.out.println("连接网址不对或读取流出现异常!!!"); return null; } finally { if (in != null) { try { in.close(); } catch (IOException e) { System.out.println("关闭流出现异常!!!"); } } if (reader != null) { try { reader.close(); } catch (IOException e) { System.out.println("关闭流出现异常!!!"); } } } } //简单使用 //小秘书网菜单http://www.xiaomishu.com/shop/postajax/GetDishList.aspx?pageSize=12&typeId=t1&typeSort=A0&resId=C47E19P46723&version=2 //请求ajax网址 StringBuilder sbSrc = new StringBuilder(); sbSrc.append("http://www.xiaomishu.com/shop/postajax/GetDishList.aspx?pageSize=10"); sbSrc.append("&typeId=" + dataId); sbSrc.append("&typeSort=A0"); String resId = delEndSeparator(sourceUrl, "/"); sbSrc.append("&resId=" + resId.substring(resId.lastIndexOf("/"))); sbSrc.append("&version=2"); //转换成json对象取出菜单 JSONObject jo = getJsonObj4Utf8(sbSrc.toString()); if (jo == null) { continue; } JSONObject menu = jo.getJSONObject("items"); Iterator<String> keys = menu.keys(); while (keys.hasNext()) { String key = keys.next(); JSONObject goods= menu.getJSONObject(key); String title = goods.get("title").toString(); String price = goods.get("price").toString(); String[] goodsInfo = new String[] {title, price}; goodsInfoLst.add(goodsInfo); } goodsInfoMap.put(goodstype, goodsInfoLst); /** * 删除符合规则的结束符 * @param obj 等删除对象 * @param endWith 结束符 * @author chitianxiang $Feb 4th, 2012 */ static private String delEndSeparator(Object obj, String endWith) { String tempStr = ""; if (!(obj instanceof String)) { tempStr = obj.toString(); } else { tempStr = (String)obj; } return tempStr.endsWith(endWith) ? tempStr.substring(0, tempStr.length() - 1) : tempStr; }