<p><span style="font-size:14px;">Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看</span><a target=_blank href="http://blog.csdn.net/zuolongsnail/archive/2011/04/21/6338366.aspx"><span style="font-size:14px;">Android开发技巧总结</span></a><span style="font-size:14px;">中的Android单元测试的步骤一文。</span></p><p><span style="color:#0000ff;"><span style="font-size:14px;">java.net包中的HttpURLConnection类</span></span></p><p><span style="color:#ff0000;"><span style="font-size:14px;">Get方式:</span></span></p><p><span style="color:#ff0000;"><span style="font-size:12px;"></span></span><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a target=_blank class="ViewSource" title="view plain" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">view plain</a><a target=_blank class="CopyToClipboard" title="copy" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">copy</a><div style="Z-INDEX: 99; POSITION: absolute; WIDTH: 18px; HEIGHT: 18px; TOP: 616px; LEFT: 547px"><embed id="ZeroClipboardMovie_1" height="18" name="ZeroClipboardMovie_1" type="application/x-shockwave-flash" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" allownetworking="all" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="true" flashvars="id=1&width=18&height=18" wmode="transparent" /></div></div></div><ol class="dp-j"><li class="alt"><span><span class="comment">//Get方式请求</span><span></span></span></li><li><span><span class="keyword">public</span><span></span><span class="keyword">static</span><span></span><span class="keyword">void</span><span>requestByGet()</span><span class="keyword">throws</span><span>Exception{</span></span></li><li class="alt"><span>Stringpath=<span class="string">"https://reg.163.com/logins.jsp?id=helloworld&pwd=android"</span><span>;</span></span></li><li><span><span class="comment">//新建一个URL对象</span><span></span></span></li><li class="alt"><span>URLurl=<span class="keyword">new</span><span>URL(path);</span></span></li><li><span><span class="comment">//打开一个HttpURLConnection连接</span><span></span></span></li><li class="alt"><span>HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();</span></li><li><span><span class="comment">//设置连接超时时间</span><span></span></span></li><li class="alt"><span>urlConn.setConnectTimeout(<span class="number">5</span><span>*</span><span class="number">1000</span><span>);</span></span></li><li><span><span class="comment">//开始连接</span><span></span></span></li><li class="alt"><span>urlConn.connect();</span></li><li><span><span class="comment">//判断请求是否成功</span><span></span></span></li><li class="alt"><span><span class="keyword">if</span><span>(urlConn.getResponseCode()==HTTP_200){</span></span></li><li><span><span class="comment">//获取返回的数据</span><span></span></span></li><li class="alt"><span><span class="keyword">byte</span><span>[]data=readStream(urlConn.getInputStream());</span></span></li><li><span>Log.i(TAG_GET,<span class="string">"Get方式请求成功,返回数据如下:"</span><span>);</span></span></li><li class="alt"><span>Log.i(TAG_GET,<span class="keyword">new</span><span>String(data,</span><span class="string">"UTF-8"</span><span>));</span></span></li><li><span>}<span class="keyword">else</span><span>{</span></span></li><li class="alt"><span>Log.i(TAG_GET,<span class="string">"Get方式请求失败"</span><span>);</span></span></li><li><span>}</span></li><li class="alt"><span><span class="comment">//关闭连接</span><span></span></span></li><li><span>urlConn.disconnect();</span></li><li class="alt"><span>}</span></li></ol></div></p><p></p><p></p><p><span style="color:#ff0000;"><span style="font-size:14px;">Post方式:</span></span></p><p><span style="color:#ff0000;"><span style="font-size:12px;"></span></span><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a target=_blank class="ViewSource" title="view plain" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">view plain</a><a target=_blank class="CopyToClipboard" title="copy" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">copy</a><div style="Z-INDEX: 99; POSITION: absolute; WIDTH: 18px; HEIGHT: 18px; TOP: 1125px; LEFT: 547px"><embed id="ZeroClipboardMovie_2" height="18" name="ZeroClipboardMovie_2" type="application/x-shockwave-flash" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" allownetworking="all" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="true" flashvars="id=2&width=18&height=18" wmode="transparent" /></div></div></div><ol class="dp-j"><li class="alt"><span><span class="comment">//Post方式请求</span><span></span></span></li><li><span><span class="keyword">public</span><span></span><span class="keyword">static</span><span></span><span class="keyword">void</span><span>requestByPost()</span><span class="keyword">throws</span><span>Throwable{</span></span></li><li class="alt"><span>Stringpath=<span class="string">"https://reg.163.com/logins.jsp"</span><span>;</span></span></li><li><span><span class="comment">//请求的参数转换为byte数组</span><span></span></span></li><li class="alt"><span>Stringparams=<span class="string">"id="</span><span>+URLEncoder.encode(</span><span class="string">"helloworld"</span><span>,</span><span class="string">"UTF-8"</span><span>)</span></span></li><li><span>+<span class="string">"&pwd="</span><span>+URLEncoder.encode(</span><span class="string">"android"</span><span>,</span><span class="string">"UTF-8"</span><span>);</span></span></li><li class="alt"><span><span class="keyword">byte</span><span>[]postData=params.getBytes();</span></span></li><li><span><span class="comment">//新建一个URL对象</span><span></span></span></li><li class="alt"><span>URLurl=<span class="keyword">new</span><span>URL(path);</span></span></li><li><span><span class="comment">//打开一个HttpURLConnection连接</span><span></span></span></li><li class="alt"><span>HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();</span></li><li><span><span class="comment">//设置连接超时时间</span><span></span></span></li><li class="alt"><span>urlConn.setConnectTimeout(<span class="number">5</span><span>*</span><span class="number">1000</span><span>);</span></span></li><li><span><span class="comment">//Post请求必须设置允许输出</span><span></span></span></li><li class="alt"><span>urlConn.setDoOutput(<span class="keyword">true</span><span>);</span></span></li><li><span><span class="comment">//Post请求不能使用缓存</span><span></span></span></li><li class="alt"><span>urlConn.setUseCaches(<span class="keyword">false</span><span>);</span></span></li><li><span><span class="comment">//设置为Post请求</span><span></span></span></li><li class="alt"><span>urlConn.setRequestMethod(<span class="string">"POST"</span><span>);</span></span></li><li><span>urlConn.setInstanceFollowRedirects(<span class="keyword">true</span><span>);</span></span></li><li class="alt"><span><span class="comment">//配置请求Content-Type</span><span></span></span></li><li><span>urlConn.setRequestProperty(<span class="string">"Content-Type"</span><span>,</span></span></li><li class="alt"><span><span class="string">"application/x-www-form-urlencode"</span><span>);</span></span></li><li><span><span class="comment">//开始连接</span><span></span></span></li><li class="alt"><span>urlConn.connect();</span></li><li><span><span class="comment">//发送请求参数</span><span></span></span></li><li class="alt"><span>DataOutputStreamdos=<span class="keyword">new</span><span>DataOutputStream(urlConn.getOutputStream());</span></span></li><li><span>dos.write(postData);</span></li><li class="alt"><span>dos.flush();</span></li><li><span>dos.close();</span></li><li class="alt"><span><span class="comment">//判断请求是否成功</span><span></span></span></li><li><span><span class="keyword">if</span><span>(urlConn.getResponseCode()==HTTP_200){</span></span></li><li class="alt"><span><span class="comment">//获取返回的数据</span><span></span></span></li><li><span><span class="keyword">byte</span><span>[]data=readStream(urlConn.getInputStream());</span></span></li><li class="alt"><span>Log.i(TAG_POST,<span class="string">"Post请求方式成功,返回数据如下:"</span><span>);</span></span></li><li><span>Log.i(TAG_POST,<span class="keyword">new</span><span>String(data,</span><span class="string">"UTF-8"</span><span>));</span></span></li><li class="alt"><span>}<span class="keyword">else</span><span>{</span></span></li><li><span>Log.i(TAG_POST,<span class="string">"Post方式请求失败"</span><span>);</span></span></li><li class="alt"><span>}</span></li><li><span>}</span></li></ol></div></p><p></p><p></p><p><span style="color:#ff0000;"></span></p><p><span style="color:#0000ff;"><span style="font-size:14px;">org.apache.http包中的HttpGet和HttpPost类</span></span></p><p></p><p><span style="color:#0000ff;"><span style="font-size:12px;"></span></span></p><p><span style="color:#ff0000;"><span style="font-size:14px;">Get方式:</span></span></p><p></p><p><span style="color:#ff0000;"><span style="font-size:12px;"></span></span><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a target=_blank class="ViewSource" title="view plain" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">view plain</a><a target=_blank class="CopyToClipboard" title="copy" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">copy</a><div style="Z-INDEX: 99; POSITION: absolute; WIDTH: 18px; HEIGHT: 18px; TOP: 2020px; LEFT: 547px"><embed id="ZeroClipboardMovie_3" height="18" name="ZeroClipboardMovie_3" type="application/x-shockwave-flash" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" allownetworking="all" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="true" flashvars="id=3&width=18&height=18" wmode="transparent" /></div></div></div><ol class="dp-j"><li class="alt"><span><span class="comment">//HttpGet方式请求</span><span></span></span></li><li><span><span class="keyword">public</span><span></span><span class="keyword">static</span><span></span><span class="keyword">void</span><span>requestByHttpGet()</span><span class="keyword">throws</span><span>Exception{</span></span></li><li class="alt"><span>Stringpath=<span class="string">"https://reg.163.com/logins.jsp?id=helloworld&pwd=android"</span><span>;</span></span></li><li><span><span class="comment">//新建HttpGet对象</span><span></span></span></li><li class="alt"><span>HttpGethttpGet=<span class="keyword">new</span><span>HttpGet(path);</span></span></li><li><span><span class="comment">//获取HttpClient对象</span><span></span></span></li><li class="alt"><span>HttpClienthttpClient=<span class="keyword">new</span><span>DefaultHttpClient();</span></span></li><li><span><span class="comment">//获取HttpResponse实例</span><span></span></span></li><li class="alt"><span>HttpResponsehttpResp=httpClient.execute(httpGet);</span></li><li><span><span class="comment">//判断是够请求成功</span><span></span></span></li><li class="alt"><span><span class="keyword">if</span><span>(httpResp.getStatusLine().getStatusCode()==HTTP_200){</span></span></li><li><span><span class="comment">//获取返回的数据</span><span></span></span></li><li class="alt"><span>Stringresult=EntityUtils.toString(httpResp.getEntity(),<span class="string">"UTF-8"</span><span>);</span></span></li><li><span>Log.i(TAG_HTTPGET,<span class="string">"HttpGet方式请求成功,返回数据如下:"</span><span>);</span></span></li><li class="alt"><span>Log.i(TAG_HTTPGET,result);</span></li><li><span>}<span class="keyword">else</span><span>{</span></span></li><li class="alt"><span>Log.i(TAG_HTTPGET,<span class="string">"HttpGet方式请求失败"</span><span>);</span></span></li><li><span>}</span></li><li class="alt"><span>}</span></li></ol></div></p><p></p><p></p><p><span style="color:#ff0000;"><span style="font-size:14px;">Post方式:</span></span></p><p><span style="color:#ff0000;"><span style="font-size:12px;"></span></span><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a target=_blank class="ViewSource" title="view plain" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">view plain</a><a target=_blank class="CopyToClipboard" title="copy" href="http://blog.csdn.net/zuolongsnail/article/details/6373051#">copy</a><div style="Z-INDEX: 99; POSITION: absolute; WIDTH: 18px; HEIGHT: 18px; TOP: 2457px; LEFT: 547px"><embed id="ZeroClipboardMovie_4" height="18" name="ZeroClipboardMovie_4" type="application/x-shockwave-flash" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" allownetworking="all" loop="false" menu="false" quality="best" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="true" flashvars="id=4&width=18&height=18" wmode="transparent" /></div></div></div><ol class="dp-j"><li class="alt"><span><span class="comment">//HttpPost方式请求</span><span></span></span></li><li><span><span class="keyword">public</span><span></span><span class="keyword">static</span><span></span><span class="keyword">void</span><span>requestByHttpPost()</span><span class="keyword">throws</span><span>Exception{</span></span></li><li class="alt"><span>Stringpath=<span class="string">"https://reg.163.com/logins.jsp"</span><span>;</span></span></li><li><span><span class="comment">//新建HttpPost对象</span><span></span></span></li><li class="alt"><span>HttpPosthttpPost=<span class="keyword">new</span><span>HttpPost(path);</span></span></li><li><span><span class="comment">//Post参数</span><span></span></span></li><li class="alt"><span>List<NameValuePair>params=<span class="keyword">new</span><span>ArrayList<NameValuePair>();</span></span></li><li><span>params.add(<span class="keyword">new</span><span>BasicNameValuePair(</span><span class="string">"id"</span><span>,</span><span class="string">"helloworld"</span><span>));</span></span></li><li class="alt"><span>params.add(<span class="keyword">new</span><span>BasicNameValuePair(</span><span class="string">"pwd"</span><span>,</span><span class="string">"android"</span><span>));</span></span></li><li><span><span class="comment">//设置字符集</span><span></span></span></li><li class="alt"><span>HttpEntityentity=<span class="keyword">new</span><span>UrlEncodedFormEntity(params,HTTP.UTF_8);</span></span></li><li><span><span class="comment">//设置参数实体</span><span></span></span></li><li class="alt"><span>httpPost.setEntity(entity);</span></li><li><span><span class="comment">//获取HttpClient对象</span><span></span></span></li><li class="alt"><span>HttpClienthttpClient=<span class="keyword">new</span><span>DefaultHttpClient();</span></span></li><li><span><span class="comment">//获取HttpResponse实例</span><span></span></span></li><li class="alt"><span>HttpResponsehttpResp=httpClient.execute(httpPost);</span></li><li><span><span class="comment">//判断是够请求成功</span><span></span></span></li><li class="alt"><span><span class="keyword">if</span><span>(httpResp.getStatusLine().getStatusCode()==HTTP_200){</span></span></li><li><span><span class="comment">//获取返回的数据</span><span></span></span></li><li class="alt"><span>Stringresult=EntityUtils.toString(httpResp.getEntity(),<span class="string">"UTF-8"</span><span>);</span></span></li><li><span>Log.i(TAG_HTTPGET,<span class="string">"HttpPost方式请求成功,返回数据如下:"</span><span>);</span></span></li><li class="alt"><span>Log.i(TAG_HTTPGET,result);</span></li><li><span>}<span class="keyword">else</span><span>{</span></span></li><li class="alt"><span>Log.i(TAG_HTTPGET,<span class="string">"HttpPost方式请求失败"</span><span>);</span></span></li><li><span>}</span></li><li class="alt"><span>}</span></li></ol></div></p><p></p><p></p><p><span style="COLOR: #ff0000"><span style="font-size:12px;"><span style="color:#000000;"><span style="font-size:14px;">以上是一些部分代码,测试的时候在测试类中运行对应的测试方法即可。</span></span></span></span></p>
  
  
  
<span style="font-size:14px;">package com.example.shezhi;import java.io.IOException;import java.io.OutputStream;  import java.net.HttpURLConnection;  import java.net.URL;  import java.net.URLEncoder;  import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;  import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.utils.URLEncodedUtils;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;  public class Update   {  String res=" ";int ites;String version="1";/////////////////////////////////////////////////////////////////////////////////////////    public String getupdate(){ //先将参数放入List,再对参数进行URL编码     List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();      params.add(new BasicNameValuePair("param1", "1"));      params.add(new BasicNameValuePair("param2", "value2"));           //对参数编码      String param = URLEncodedUtils.format(params, "UTF-8");      //baseUrl                 String baseUrl = "http://******/index1.jsp";      //将URL与参数拼接      HttpGet getMethod = new HttpGet(baseUrl + "?" + param);                        HttpClient httpClient = new DefaultHttpClient();      try {HttpResponse response = httpClient.execute(getMethod); res="已经请求";} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} //发起GET请求        try {          HttpResponse response = httpClient.execute(getMethod); //发起GET请求              ites=response.getStatusLine().getStatusCode(); //获取响应码         System.out.println(ites+"aaa");       res="1213"+EntityUtils.toString(response.getEntity(), "utf-8");//获取服务器响应内容          System.out.println(res+"vvv");          } catch (ClientProtocolException e) {          // TODO Auto-generated catch block          e.printStackTrace();      } catch (IOException e) {          // TODO Auto-generated catch block          e.printStackTrace();      }       return res;   }     /********************************************************************************************  /**  * HttpClient  Post方法  * @return  */   public String Postupdate(){   String urlPath="http://******/index1.jsp";         String realPath=urlPath.replaceAll(" ", "");//把多余的空格替换掉          HttpPost httpRequest=new HttpPost(realPath);   // 添加要传递的参数     List<NameValuePair> params = new ArrayList<NameValuePair>();   NameValuePair pair1 = new BasicNameValuePair("username", "gzw");   NameValuePair pair2 = new BasicNameValuePair("password", "123");   params.add(pair1);   params.add(pair2);       try       {    // 设置字符集         HttpEntity httpentity = new UrlEncodedFormEntity(params, "utf-8");         // 请求httpRequest       httpRequest.setEntity(httpentity);        // 取得默认的HttpClient        HttpClient httpclient = new DefaultHttpClient();        // 取得HttpResponse         HttpResponse httpResponse = httpclient.execute(httpRequest);        // HttpStatus.SC_OK表示连接成功         if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)        {           // 取得返回的字符串        String strResult = EntityUtils.toString(httpResponse.getEntity());        res=strResult;       }        else            {                 res="失败";       }               }catch  (Exception e)          {       e.printStackTrace();       }       return res;    }/********************************************************************************************/    /**    * 调用java类  get方法    */        public String get_update(){   String urlPath="http://******/index1.jsp"+"?type=save&version="+version+"";         String realPath=urlPath.replaceAll(" ", "");//把多余的空格替换掉          try       {       if(getRequest(realPath))           {           //成功       res="成功";           }              }catch  (Exception e)          {       res="失败";       }       return res;    }               /**    * java类  get方法    * @return    *///get请求,有文件长度大小限制       public static boolean getRequest(String urlPath) throws Exception      {          URL url=new URL(urlPath);          HttpURLConnection con=(HttpURLConnection)url.openConnection();          con.setRequestMethod("GET");          con.setReadTimeout(5*1000);          if(con.getResponseCode()==200)          {              return true;          }          return false;      }       /********************************************************************************************       /**     * 调用下面java类  Post方法     * @return     */        public String post_update(){    String urlPath="http://www.gdhdcy.com/hdleague1/index1.jsp";          Map<String,String> map=new HashMap<String,String>();//用集合来做,比字符串拼接来得直观           map.put("type", "save");          map.put("version", version);          try        {        if(postRequest(urlPath,map))            {            //成功        res="成功";            }                }catch  (Exception e)           {        res="失败";        } return res;     }    /**     * java类  post方法     * @return     */    //post请求,无文件长度大小限制       public static boolean postRequest(String urlPath,Map<String,String> map) throws Exception      {          StringBuilder builder=new StringBuilder(); //拼接字符           //拿出键值           if(map!=null && !map.isEmpty())          {              for(Map.Entry<String, String> param:map.entrySet())              {                  builder.append(param.getKey()).append('=').append(URLEncoder.encode(param.getValue(), "utf-8")).append('&');              }              builder.deleteCharAt(builder.length()-1);          }          //下面的Content-Length: 是这个URL的二进制数据长度           byte b[]=builder.toString().getBytes();          URL url=new URL(urlPath);          HttpURLConnection con=(HttpURLConnection)url.openConnection();          con.setRequestMethod("POST");          con.setReadTimeout(5*1000);          con.setDoOutput(true);//打开向外输出           con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//内容类型           con.setRequestProperty("Content-Length",String.valueOf(b.length));//长度           OutputStream outStream=con.getOutputStream();          outStream.write(b);//写入数据           outStream.flush();//刷新内存           outStream.close();          //状态码是不成功           if(con.getResponseCode()==200)          {              return true;          }          return false;                 }  } </span>

更多相关文章

  1. Android的四种启动方式
  2. Android中的几种网络请求方式详解
  3. Android中的几种网络请求方式详解 .
  4. [ ]Android(安卓)Post请求 RestFull Wcf
  5. ContentProvider
  6. Android通过WebView与JS交互的全面方式
  7. 在 Android(安卓)上使用协程(三) :Real Work
  8. delphi XE开发微信支付Android获取手机存储权限、Android获取短
  9. Android(安卓)各大网络请求库的比较及实战

随机推荐

  1. Android工程引用其他项目
  2. windwos安装Android(安卓)NDK(Native Dev
  3. @SuppressLint("NewApi")作用
  4. DDPush开源推送框架源码分析之APPServer
  5. Android(安卓)sdk安装目录中没有platform
  6. 【Android】ORM框架greenDao 3
  7. Android中AVD(Android(安卓)Virtual Devic
  8. Android(安卓)ZXing源码简化
  9. Android中资源的引用
  10. Android(安卓)使用Rtmp音视频推流