本章目的: 实现在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. 学习笔记(六) 网络编程与数据处理
  2. Android(安卓)之 ContentProvider 共享数据库-通讯录
  3. Android(安卓)中文API (69) —— BluetoothAdapter[蓝牙]
  4. Android(安卓)编程下 Touch 事件的分发和消费机制
  5. android 4.0后请求网络android.os.NetworkOnMainThreadException
  6. Android(安卓)apk间通过设置sharedUserId共享资源
  7. Android(安卓)- SQLite in Android
  8. Android(安卓)API中文文档(111) ―― MailTo
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. Robolectric框架概述
  2. android视频桌面源码,酒店应用源码等
  3. android listview 圆角的实现方案,模仿Iph
  4. Android 电子杂志(带翻页效果)源码
  5. Flutter布局中嵌入Android原生组件 - 全
  6. android之播放多媒体文件一(播放音频)
  7. 巧用AsyncTask的onProgressUpdate回调
  8. Android[初级教程]第一篇 Button控件和Te
  9. Android面试总结-中高级
  10. Android音频系统探究——从SoundPool到Au