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

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

HttpClienthc=null;HttpGethg=null;StringbaseUrl="http://192.168.15.88:8000/api/cms/poi/poisearch.do";List<BasicNameValuePair>params=newArrayList<BasicNameValuePair>();params.add(newBasicNameValuePair("name","Lucy"));params.add(newBasicNameValuePair("grades","89"));StringparamsUrl=URLEncodedUtils.format(params,HTTP.UTF_8);hg=newHttpGet(baseUrl+paramsUrl);hc=newDefaultHttpClient();HttpResponsehr=null;Stringresult=null;try{hr=hc.execute(hg);}catch(ClientProtocolExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}if(hr.getStatusLine().getStatusCode()==200){try{result=EntityUtils.toString(hr.getEntity());//可以获取字符串,也可以获取字节。这里获取字符串}catch(ParseExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}

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

POST

HttpClienthc=null;HttpPosthp=null;StringbaseUrl="http://192.168.15.88:8000/api/cms/poi/poisearch.do";List<BasicNameValuePair>params=newArrayList<BasicNameValuePair>();params.add(newBasicNameValuePair("name","Lucy"));params.add(newBasicNameValuePair("grades","89"));hp=newHttpPost(baseUrl);try{hp.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));}catch(UnsupportedEncodingExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}hc=newDefaultHttpClient();HttpResponsehr=null;Stringresult=null;try{hr=hc.execute(hp);}catch(ClientProtocolExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}if(hr.getStatusLine().getStatusCode()==200){try{result=EntityUtils.toString(hr.getEntity());}catch(ParseExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}

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

更多相关文章

  1. Android(安卓)Fragment的使用
  2. Android(安卓)绘图基础:Canvas,Paint,RectF,Paint类
  3. Android(安卓)ndk入门准备--hello jni
  4. Adroid 使用AIDL和远程服务实现进程通信
  5. Android(安卓)源码详解:View的事件分发机制
  6. 【源码】Android(安卓)圆形图片之 CircleImageView 源码解读
  7. Android-动画实现原理
  8. Android的一个技巧
  9. 手机管理应用研究【2】—— 安装卸载篇

随机推荐

  1. 重载get
  2. 安装配置php无法运行提示0xc000007b
  3. WordPress社区商城小程序“酱茄pro小程序
  4. pdo操作
  5. 碰见提示格式化怎么解决?
  6. 桌面文件误删怎么找回
  7. 矩阵的乘法运算与css的3d变换(transform)
  8. PHP数据库操作:PDO基本操作
  9. 【Redis】PHP操作Redis的命令大全
  10. 解决Laravel5.5版本框架缺少vender目录报