这几天试着解决的问题有以下几个:

1)开发Android的时候打开Eclipse ADT将鼠标移到基础类的方法上时,不能显示方法的具体信息,方法解释。起初不知道这是工具Eclipse的问题,还是Android的问题。后来百度后又很多热心而全面的解答,才定位到这原来是Eclipse中关于JavaDoc的设置问题。右击项目-Property-JavaDoc  Location,这里可以设置网上的android的javaDoc位置,也可以设置自己用ADT-SDK Manager 下载的android SDK文件夹下/Doc/References的位置,前提是你必须在SDK Manager下载了“Documentation for Android SDK”,这个我认为就是SDK 的API,也就是JavaDoc。这样做以后我的问题就解决了。经过我自己的琢磨,用自己朴素的语言理解就是:JavaDoc就是把SDK API嵌入到工具中,让其在开发中能自动显示。我的开发工具中没有自动显示出来,直接原因是开发工具中JavaDoc的位置设置错误,其实本质是我没有下载API文档。这里也让我又涨了姿势,不需要自己去搜索引擎搜索,只需要使用SDK Manager就能下载Android开发的各种官方资源。

2)Android开发中利用HttpGet或者HttpPost发起网络请求。曾经也在java开发时用过HttpURLConnection,疑惑他们的关系,大概搜了下,没有深入研究,自己理解就是:HttpURLConnection是java原生的网络访问的类,操作比较繁琐但是足够灵活;Http.Client(HttpGet和HttpPost的长辈类)是Android封装了Java中的一些类所开发出的开源框架,使用简单。

现在我开发的问题倒不是上面的问题,而是怎样对请求参数编码转换?HttpGet和HttpPost又是如何对各自的请求参数进行编码转换的?我现在解决问题的方式应该是不求甚解型,就是大概知道为什么这样,但是再追求下去,问到源码之类的,我就不清楚了。至于为什么要对请求编码,是因为在请求中,请求参数中的空格会被转成+,除了数字字母和  .  _  - 以外的符号和中文字符会被转正%XX,XX为其十六进制表示。请求方法如下:

GET

HttpClient hc=null;
        HttpGet hg=null;
        String baseUrl="http://192.168.15.88:8000/api/cms/poi/poisearch.do";
        List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("name","Lucy"));
        params.add(new BasicNameValuePair("grades","89"));
        String paramsUrl=URLEncodedUtils.format(params, HTTP.UTF_8);
        hg=new HttpGet(baseUrl+paramsUrl);
        hc=new DefaultHttpClient();
        HttpResponse hr=null;
        String result=null;
        try {
            hr=hc.execute(hg);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(hr.getStatusLine().getStatusCode()==200){
            try {
                result=EntityUtils.toString(hr.getEntity()); //可以获取字符串,也可以获取字节。这里获取字符串
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        HttpClient hc=null;
        HttpGet hg=null;
        String baseUrl="http://192.168.15.88:8000/api/cms/poi/poisearch.do";
        List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("name","Lucy"));
        params.add(new BasicNameValuePair("grades","89"));
        String paramsUrl=URLEncodedUtils.format(params, HTTP.UTF_8);
        hg=new HttpGet(baseUrl+paramsUrl);
        hc=new DefaultHttpClient();
        HttpResponse hr=null;
        String result=null;
        try {
            hr=hc.execute(hg);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(hr.getStatusLine().getStatusCode()==200){
            try {
                result=EntityUtils.toString(hr.getEntity()); //可以获取字符串,也可以获取字节。这里获取字符串
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

服务器不要求请求转码的时候也可以不对URL编码,这个时候URL可以直接用字符串拼接的方式得到,即baseUrl=baseUrl+"?name="+name+"&age="+age;

POST

HttpClient hc=null;
        HttpPost hp=null;
        String baseUrl="http://192.168.15.88:8000/api/cms/poi/poisearch.do";
        List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("name","Lucy"));
        params.add(new BasicNameValuePair("grades","89"));
        hp=new HttpPost(baseUrl);
        try {
            hp.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        hc=new DefaultHttpClient();
        HttpResponse hr=null;
        String result=null;
        try {
            hr=hc.execute(hp);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(hr.getStatusLine().getStatusCode()==200){
            try {
                result=EntityUtils.toString(hr.getEntity());
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        HttpClient hc=null;
        HttpPost hp=null;
        String baseUrl="http://192.168.15.88:8000/api/cms/poi/poisearch.do";
        List<BasicNameValuePair> params=new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("name","Lucy"));
        params.add(new BasicNameValuePair("grades","89"));
        hp=new HttpPost(baseUrl);
        try {
            hp.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        hc=new DefaultHttpClient();
        HttpResponse hr=null;
        String result=null;
        try {
            hr=hc.execute(hp);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(hr.getStatusLine().getStatusCode()==200){
            try {
                result=EntityUtils.toString(hr.getEntity());
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

写的都很粗略,因为暂时开发水平才入门,所以请看官多多指教。