Android訪問WCF(下篇)-用戶端開發

來源:互聯網
上載者:User
 

本章目的: 實現在Android用戶端請求我們上篇建立的WCF資料服務.

此部分分為 建立Http請求 跟 接受WCF 返回的資料.

一. 建立Http請求的方法

protected String getRequest(String url, DefaultHttpClient client)<br /> throws Exception {<br /> String result = null;<br /> int statusCode = 0;<br /> HttpGet getMethod = new HttpGet(url);<br /> Log.d(TAG, "do the getRequest,url=" + url + "");<br /> try {<br /> getMethod.setHeader("User-Agent", USER_AGENT);<br /> // HttpParams params = new HttpParams();</p><p> // 添加使用者密碼驗證資訊<br /> // client.getCredentialsProvider().setCredentials(<br /> // new AuthScope(null, -1),<br /> // new UsernamePasswordCredentials(mUsername, mPassword));</p><p> HttpResponse httpResponse = client.execute(getMethod);<br /> // statusCode == 200 正常<br /> statusCode = httpResponse.getStatusLine().getStatusCode();<br /> Log.d(TAG, "statuscode = " + statusCode);<br /> // 處理返回的httpResponse資訊<br /> result = retrieveInputStream(httpResponse.getEntity());<br /> } catch (Exception e) {<br /> Log.e(TAG, e.getMessage());<br /> throw new Exception(e);<br /> } finally {<br /> getMethod.abort();<br /> }<br /> return result;<br /> }<br />

 

參數URL: 我們要請求的地址

Client:  這個可以直接用new DefaultHttpClient(new BasicHttpParams()) 來初始化.

這個方法中需要注意RetrieveInputStream方法, 這個是當Http請求完成之後, 用來處理伺服器返回資料的方法,

 

二. 接受從WCF端傳回的資料

protected String retrieveInputStream(HttpEntity httpEntity) {<br /> int length = (int) httpEntity.getContentLength();<br /> if (length < 0)<br /> length = 10000;<br /> StringBuffer stringBuffer = new StringBuffer(length);<br /> try {<br /> InputStreamReader inputStreamReader = new InputStreamReader(<br /> httpEntity.getContent(), HTTP.UTF_8);<br /> char buffer[] = new char[length];<br /> int count;<br /> while ((count = inputStreamReader.read(buffer, 0, length - 1)) > 0) {<br /> stringBuffer.append(buffer, 0, count);<br /> }<br /> } catch (UnsupportedEncodingException e) {<br /> Log.e(TAG, e.getMessage());<br /> } catch (IllegalStateException e) {<br /> Log.e(TAG, e.getMessage());<br /> } catch (IOException e) {<br /> Log.e(TAG, e.getMessage());<br /> }<br /> return stringBuffer.toString();<br /> }<br />

 

此方法在接受到WCF服務端返回的資料之後,  轉換程String類型返回.

附加內容:

private static final String BASE_URL = "http://10.0.2.2:82/BlogCategoryService/";<br /> private static final String EXTENSION = "Json/";;<br /> private static final String TAG = "API";<br /> private static final String USER_AGENT = "Mozilla/4.5";</p><p> public JSONObject getObject(String sbj) throws JSONException, Exception {<br /> return new JSONObject(getRequest(BASE_URL + EXTENSION + sbj));<br /> }</p><p> public JSONArray getArray(String sbj) throws JSONException,<br /> Exception {<br /> return new JSONArray(getRequest(BASE_URL + EXTENSION + sbj));<br /> }</p><p> protected String getRequest(String url) throws Exception {<br /> return getRequest(url, new DefaultHttpClient(new BasicHttpParams()));<br /> }<br />

 

請求資料之前封裝方法:

 

總結 : 此篇主要說明了Http請求的的兩個階段, 建立請求跟接受伺服器返回的資料, 在下篇再主要說明如何處理服務端返回的JSON資料,並把資料顯示在UI上面.

本章目的: 實現在Android用戶端請求我們上篇建立的WCF資料服務.

此部分分為 建立Http請求 跟 接受WCF 返回的資料.

一. 建立Http請求的方法

protected String getRequest(String url, DefaultHttpClient client)<br /> throws Exception {<br /> String result = null;<br /> int statusCode = 0;<br /> HttpGet getMethod = new HttpGet(url);<br /> Log.d(TAG, "do the getRequest,url=" + url + "");<br /> try {<br /> getMethod.setHeader("User-Agent", USER_AGENT);<br /> // HttpParams params = new HttpParams();</p><p> // 添加使用者密碼驗證資訊<br /> // client.getCredentialsProvider().setCredentials(<br /> // new AuthScope(null, -1),<br /> // new UsernamePasswordCredentials(mUsername, mPassword));</p><p> HttpResponse httpResponse = client.execute(getMethod);<br /> // statusCode == 200 正常<br /> statusCode = httpResponse.getStatusLine().getStatusCode();<br /> Log.d(TAG, "statuscode = " + statusCode);<br /> // 處理返回的httpResponse資訊<br /> result = retrieveInputStream(httpResponse.getEntity());<br /> } catch (Exception e) {<br /> Log.e(TAG, e.getMessage());<br /> throw new Exception(e);<br /> } finally {<br /> getMethod.abort();<br /> }<br /> return result;<br /> }<br />

 

參數URL: 我們要請求的地址

Client:  這個可以直接用new DefaultHttpClient(new BasicHttpParams()) 來初始化.

這個方法中需要注意RetrieveInputStream方法, 這個是當Http請求完成之後, 用來處理伺服器返回資料的方法,

 

二. 接受從WCF端傳回的資料

protected String retrieveInputStream(HttpEntity httpEntity) {<br /> int length = (int) httpEntity.getContentLength();<br /> if (length < 0)<br /> length = 10000;<br /> StringBuffer stringBuffer = new StringBuffer(length);<br /> try {<br /> InputStreamReader inputStreamReader = new InputStreamReader(<br /> httpEntity.getContent(), HTTP.UTF_8);<br /> char buffer[] = new char[length];<br /> int count;<br /> while ((count = inputStreamReader.read(buffer, 0, length - 1)) > 0) {<br /> stringBuffer.append(buffer, 0, count);<br /> }<br /> } catch (UnsupportedEncodingException e) {<br /> Log.e(TAG, e.getMessage());<br /> } catch (IllegalStateException e) {<br /> Log.e(TAG, e.getMessage());<br /> } catch (IOException e) {<br /> Log.e(TAG, e.getMessage());<br /> }<br /> return stringBuffer.toString();<br /> }<br />

 

此方法在接受到WCF服務端返回的資料之後,  轉換程String類型返回.

附加內容:

private static final String BASE_URL = "http://10.0.2.2:82/BlogCategoryService/";<br /> private static final String EXTENSION = "Json/";;<br /> private static final String TAG = "API";<br /> private static final String USER_AGENT = "Mozilla/4.5";</p><p> public JSONObject getObject(String sbj) throws JSONException, Exception {<br /> return new JSONObject(getRequest(BASE_URL + EXTENSION + sbj));<br /> }</p><p> public JSONArray getArray(String sbj) throws JSONException,<br /> Exception {<br /> return new JSONArray(getRequest(BASE_URL + EXTENSION + sbj));<br /> }</p><p> protected String getRequest(String url) throws Exception {<br /> return getRequest(url, new DefaultHttpClient(new BasicHttpParams()));<br /> }<br />

 

請求資料之前封裝方法:

 

總結 : 此篇主要說明了Http請求的的兩個階段, 建立請求跟接受伺服器返回的資料, 在下篇再主要說明如何處理服務端返回的JSON資料,並把資料顯示在UI上面.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.