首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

依据网址,返回JSONObject对象

2012-06-27 
根据网址,返回JSONObject对象import java.io.BufferedReaderimport java.io.IOExceptionimport java.io.

根据网址,返回JSONObject对象

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;} 

热点排行
Bad Request.