本文總結了三種擷取網頁資料的代碼,是自己在用的時候隨手整理出來的。此處僅貼出函數段,不貼出import了,用的時候可以用eclipse自動import一下就行了。函數的詳細用途描述請看代碼中注釋。調用的時候請對應函數需要的參數。
//第一種/**擷取參數(ArrayList<NameValuePair> nameValuePairs,String url)後post給遠程伺服器 * 將獲得的返回結果(String)返回給調用者 * 本函數適用於查詢數量較少的時候 * Chen.Zhidong * 2011-02-15*/public String posturl(ArrayList<NameValuePair> nameValuePairs,String url){ String result = ""; String tmp= ""; InputStream is = null; try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ return "Fail to establish http connection!"; } try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8")); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); tmp=sb.toString(); }catch(Exception e){ return "Fail to convert net stream!"; } try{ JSONArray jArray = new JSONArray(tmp); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Iterator<?> keys=json_data.keys(); while(keys.hasNext()){ result += json_data.getString(keys.next().toString()); } } }catch(JSONException e){ return "The URL you post is wrong!"; } return result;}//第二種/**擷取參數指定的網頁代碼,將其返回給調用者,由調用者對其解析 * 返回String * Chen.Zhidong * 2011-02-15*/public String posturl(String url){ InputStream is = null; String result = ""; try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ return "Fail to establish http connection!"+e.toString(); } try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8")); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ return "Fail to convert net stream!"; } return result;}//第三種/**擷取指定地址的網頁資料 * 返回資料流 * Chen.Zhidong * 2011-02-18*/public InputStream streampost(String remote_addr){ URL infoUrl = null; InputStream inStream = null; try { infoUrl = new URL(remote_addr); URLConnection connection = infoUrl.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection)connection; int responseCode = httpConnection.getResponseCode(); if(responseCode == HttpURLConnection.HTTP_OK){ inStream = httpConnection.getInputStream(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return inStream;}