本章目的: 实现在Android客户端请求我们上篇建立的WCF数据服务.

此部分分为 建立Http请求 跟 接受WCF 返回的数据.

一. 建立Http请求的方法

protected String getRequest(String url, DefaultHttpClient client)            throws Exception {        String result = null;        int statusCode = 0;        HttpGet getMethod = new HttpGet(url);        Log.d(TAG, "do the getRequest,url=" + url + "");        try {            getMethod.setHeader("User-Agent", USER_AGENT);            // HttpParams params = new HttpParams();            // 添加用户密码验证信息            // client.getCredentialsProvider().setCredentials(            // new AuthScope(null, -1),            // new UsernamePasswordCredentials(mUsername, mPassword));            HttpResponse httpResponse = client.execute(getMethod);            // statusCode == 200 正常            statusCode = httpResponse.getStatusLine().getStatusCode();            Log.d(TAG, "statuscode = " + statusCode);            // 处理返回的httpResponse信息            result = retrieveInputStream(httpResponse.getEntity());        } catch (Exception e) {            Log.e(TAG, e.getMessage());            throw new Exception(e);        } finally {            getMethod.abort();        }        return result;    }

参数URL: 我们要请求的地址

Client: 这个可以直接用new DefaultHttpClient(new BasicHttpParams()) 来初始化.

这个方法中需要注意RetrieveInputStream方法, 这个是当Http请求完成之后, 用来处理服务器返回数据的方法,

二. 接受从WCF端传回的数据

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

此方法在接受到WCF服务端返回的数据之后, 转换程String类型返回.

附加内容:

请求数据之前封装方法:

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

总结 : 此篇主要说明了Http请求的的两个阶段, 建立请求跟接受服务器返回的数据, 在下篇再主要说明如何处理服务端返回的JSON数据,并把数据显示在UI上面.

更多相关文章

  1. Android(安卓)点击两次返回键退出程序
  2. 模仿Android(安卓)location provider
  3. Android(安卓)定时到服务器取数据并刷新
  4. Android使用SAX解析XML(3)
  5. Android之零碎记忆点
  6. Android(安卓)读取Resources和Assets
  7. Android(安卓)使用HTTP(get和post)方式登陆服务器
  8. Android(安卓)Http请求失败解决方法
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. Android(安卓)Menu
  2. android中全局变量的运用
  3. [原]如何在Android用FFmpeg解码图像
  4. No 90 · android如何调用dotnet编写的we
  5. AndroidHttpClient使用Cookie应用分析
  6. Android中的Intent和Intent-Filter详解(一
  7. EditText的inputType属性详解,让指定的Edi
  8. Android(安卓)API 解析开发包
  9. Android中AsyncTask的简单用法
  10. Android(安卓)StagefrightPlayer