package com.kitty.poclient.http; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.content.Context; import android.util.Log; import com.kitty.poclient.R; import com.kitty.poclient.common.Constant; import com.kitty.poclient.common.UpnpApp; import com.kitty.poclient.common.WatchDog; import com.kitty.poclient.domain.Artist; import com.kitty.poclient.domain.Column; import com.kitty.poclient.domain.Pack; import com.kitty.poclient.util.JsonUtil; import com.kitty.poclient.util.Md5Util; import com.kitty.poclient.util.SignaturGenUtil; import com.kitty.poclient.util.StringUtil; public class HttpGetter { private static final String TAG = "HttpGetter: "; private Context context; // // HTTP查询栏目接口 // public static final String baseUrl = // "http://192.168.1.230/zhenxianwang/ws/"; // // public static final String baseUrl = // "http://music1.zhenxian.fm/zhenxianwang/ws/content/"; public String pKey = ""; public HttpGetter(Context context) { this.context = context; if ("".equals(pKey)) { getPKey(); } } private void getPKey() { // pKey = Md5Util.process(WatchDog.currentUserId + "_" + // WatchDog.currentPassword);// 正确的key:f39f81eb84d2720eef51a66b8235af15 // System.out.println("pKey=" + pKey); pKey = Constant.P_KEY; } public String getUri(String whatToQuery, String paramsInOrder) { String uri = ""; String pStringToSign = StringUtil.StringFilter(paramsInOrder);// 去掉参数中的特殊字符 System.out.println("pstringtosign=" + pStringToSign); String signature = SignaturGenUtil.generator(pStringToSign, pKey); uri = Constant.getBaseUrl() + whatToQuery + paramsInOrder + "&signature=" + signature; System.out.println("uri=" + uri); return uri; } public String getUriMimingBox(String whatToQuery, String paramsInOrder) { String uri = ""; String pStringToSign = StringUtil.StringFilter(paramsInOrder);// 去掉参数中的特殊字符 System.out.println("pstringtosign=" + pStringToSign); String signature = SignaturGenUtil.generator(pStringToSign, Constant.DEVICE_KEY); uri = Constant.getBaseUrl() + whatToQuery + paramsInOrder + "&signature=" + signature; System.out.println("uri=" + uri); return uri; } /* * 获取某栏目下的专辑列表 */ public String getColumnAlbumsList(Column botique, int columnType) { String whatToQuery = "content/album/list?"; // int type = columnType; // long id=botique.getId(); int maxitems = 6; int startitem = 0; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&id=" + botique.getId() + "&maxitems=" + maxitems + "&protocolver=" + Constant.protocolver + "&startitem=" + startitem + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis() + "&type=" + columnType; // String uri=getUri(whatToQuery, paramsInOrder); // // String json=doHttpGet(uri,botique.getName()); return doHttpGet(getUri(whatToQuery, paramsInOrder), botique.getName()); } public String getColumnAlbumsList(long columnId, String columnName, int startItem, int maxItems) { String whatToQuery = "content/album/list?"; // int type = getColumnAlbumsType(); int maxitems = maxItems; int startitem = startItem; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&id=" + columnId + "&maxitems=" + maxitems + "&protocolver=" + Constant.protocolver + "&startitem=" + startitem + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis() + "&type=" + getColumnAlbumsType(); // String uri=getUri(whatToQuery, paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), columnName); System.out.println("jsonArtistAlbums=" + json); return json; } private int getColumnAlbumsType() { if ("精品聚焦".equals(WatchDog.tabWebFragment.currentMenuItem)) { return Constant.COLUMN_ALBUMS_4_BOTIQUES; } else if ("TOP100".equals(WatchDog.tabWebFragment.currentMenuItem)) { return Constant.COLUMN_ALBUMS_4_TOPS; } else if ("类型".equals(WatchDog.tabWebFragment.currentMenuItem)) { return Constant.COLUMN_ALBUMS_4_GENRES; } else if ("演出者".equals(WatchDog.tabWebFragment.currentMenuItem)) { return Constant.COLUMN_ALBUMS_4_ARTISTS; } else if ("搜索结果".equals(WatchDog.tabWebFragment.currentMenuItem)) { return Constant.COLUMN_ALBUMS_4_ARTISTS; } return 0; } /* * 获取精品聚焦栏目列表 */ public List<Column> getBotiquesList() { String whatToQuery = "content/column?"; int type = 1; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis() + "&type=" + type; // String uri = getUri(whatToQuery,paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "botiques"); return new JsonUtil().getBotiques(json); } /* * 获取演出者列表 */ public List<Artist> getArtistsList(int startitem, int maxitems, String firstLetter) { // content/artist/list? startitem=STARTITEM&maxitems=MAXITEMS& // firstletter=FIRSTLETTER&apikey=DEVICENO×tamp=TIMESTATMP& // protocolver=PROTOCOLVER&signature=SIGNATURE String whatToQuery = "content/artist/list?"; // int startitem=0; // int maxitems=20; // String firstletter = firstLetter == null ? "all" : firstLetter; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&firstletter=" + firstLetter + "&maxitems=" + maxitems + "&protocolver=" + Constant.protocolver + "&startitem=" + startitem + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); // String uri = getUri(whatToQuery,paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "artists"); return new JsonUtil().getArtists(json); } public String getArtistsListII(int startitem, int maxitems, String firstLetter) { // content/artist/list? startitem=STARTITEM&maxitems=MAXITEMS& // firstletter=FIRSTLETTER&apikey=DEVICENO×tamp=TIMESTATMP& // protocolver=PROTOCOLVER&signature=SIGNATURE String whatToQuery = "content/artist/list?"; // int startitem=0; // int maxitems=20; // String firstletter = firstLetter == null ? "all" : firstLetter; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&firstletter=" + firstLetter + "&maxitems=" + maxitems + "&protocolver=" + Constant.protocolver + "&startitem=" + startitem + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); // String uri = getUri(whatToQuery,paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "artists"); return json; } /* * 获取音乐主题列表 */ public List<Pack> getThemesList(int startitem, int maxitems) { // content/pack/list? // maxitems=MAXITEMS&startitem=STARTITEM&apikey=DEVICENO& // timestamp=TIMESTATMP&protocolver=PROTOCOLVER& signature=SIGNATURE String whatToQuery = "content/pack/list?"; Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&maxitems=" + maxitems + "&protocolver=" + Constant.protocolver + "&startitem=" + startitem + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); // String uri = getUri(whatToQuery,paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "artists"); System.out.println("jsonThemes=" + json); return new JsonUtil().getThemes(json); } private String doHttpGet(String uri, String tag) { String json = ""; DefaultHttpClient client = new HttpClientProducer().getHttpClient(Constant.CONNECTION_TIMEOUT_MILLIS, Constant.SOCKET_TIMEOUT_MILLIS);// 设置client的连接超时和读取数据超时时间 HttpGet httpGet = new HttpGet(uri); try { HttpResponse response = client.execute(httpGet); if (response.getStatusLine().getStatusCode() != 200) { Log.e(TAG, "获取数据失败!"); Log.e(TAG, "response.getStatusLine().getStatusCode()=" + response.getStatusLine().getStatusCode()); UpnpApp.mainHandler.showAlert(R.string.network_unnormal_alert); json = UpnpApp.context.getResources().getString(R.string.data_load_failed); currentFragmentOnDataLoadFailed(); httpGet.abort(); } else { Log.e(TAG, ">>>>>>>>>>>>>>获取数据成功<<<<<<<<<<<<<<<<"); HttpEntity entity = response.getEntity(); json = EntityUtils.toString(entity, "utf-8").trim(); System.out.println("json response=" + json); } } catch (Exception e) { Log.e(TAG, "发现异常:e=" + e); e.printStackTrace(); json = UpnpApp.context.getResources().getString(R.string.data_load_failed); currentFragmentOnDataLoadFailed(); } finally { client.getConnectionManager().shutdown(); System.out.println("client 已关闭"); } return json; } private void currentFragmentOnDataLoadFailed() { if (WatchDog.currentSelfReloader != null) { WatchDog.currentSelfReloader.onDataLoadFailed(); } } /* * 根据专辑ID获取专辑详情数据 */ public String getAlbumDetail(long albumId) { String whatToQuery = "content/album/detail?"; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&id=" + albumId + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); // String uri=getUri(whatToQuery, paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "getAlbumDetail"); return json; } /* * 根据专辑ID获取音乐主题详情数据 */ public String getPackDetail(long packId) { // content/pack/detail?id=PACKID &apikey=DEVICENO×tamp=TIMESTATMP& // protocolver=PROTOCOLVER&signature=SIGNATURE String whatToQuery = "content/pack/detail?"; // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&id=" + packId + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); // String uri=getUri(whatToQuery, paramsInOrder); // String json=doHttpGet(getUri(whatToQuery, // paramsInOrder),"getPackDetail"); return doHttpGet(getUri(whatToQuery, paramsInOrder), "getPackDetail"); } public String getBalance() { String whatToQuery = "balanceforpad?"; String paramsInOrder = "apikey=" + Constant.apikey + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); return doHttpGet(getUri(whatToQuery, paramsInOrder), "getBalance"); } /* * 查询排行榜栏目 */ public List<Column> getTopsList() { String whatToQuery = "content/column?"; int type = 5;// 排行榜 // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis() + "&type=" + type; // String uri = getUri(whatToQuery,paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "tops"); return new JsonUtil().getTops(json); } /* * 查询类型(栏目) */ public List<Column> getGenresList() { String whatToQuery = "content/genres?"; // int id=10000;//固定值//ken 2013.10.21 既然是固定值就不要写出来了呀 // Long timestamp = System.currentTimeMillis(); String paramsInOrder = "apikey=" + Constant.apikey + "&id=" + 10000 + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); // String uri = getUri(whatToQuery,paramsInOrder); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "genres"); System.out.println("jsonGenres=" + json); return new JsonUtil().getGenres(json); } public String getLatestVersion() { // "https://ws.zhenxian.com/zhenxianwang/ws/account/appcheck? sys=SYS&type=TYPE&temptype=TEMPTYPE& apikey=DEVICENO& timestamp=TIMESTATMP&protocolver=PROTOCOLVER& signature=SIGNATURE"; String whatToQuery = "account/appcheck?"; int sys = Constant.APP_OS_TYPE; int type = Constant.APP_DEVICE_TYPE; String tempType = Constant.APP_TEMP_TYPE; // WatchDog.currentUserId =,Constant.apikey =//fuck String paramsInOrder = "apikey=" + Constant.apikey + "&protocolver=" + Constant.protocolver + "&sys=" + sys + "&temptype=" + tempType + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis() + "&type=" + type; Log.e("软件升级", TAG + "url=" + getUri(whatToQuery, paramsInOrder)); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "getLatestVersion()"); Log.e("软件升级", TAG + "getLatestVersion():json=" + json); return json; } public String getBotiquesListII() { String whatToQuery = "content/column?"; int type = 1; String paramsInOrder = "apikey=" + Constant.apikey + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis() + "&type=" + type; String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "botiques"); return json; } public String getMusicDetail(Long musicId) { String whatToQuery = "content/music/detail?"; String paramsInOrder = "apikey=" + Constant.apikey + "&id=" + musicId + "&protocolver=" + Constant.protocolver + "&terminaltype=" + Constant.terminaltype + "×tamp=" + System.currentTimeMillis(); String json = doHttpGet(getUri(whatToQuery, paramsInOrder), "getMusicDetail"); return json; } }