Android Http请求方法汇总

最近对比了Android 中使用的JDK的HttpURLConnection和Apache的HttpClien访问网络资源,总结了Http协议的相关资料。如下:

JDK的HttpURLConnection:

(1)get请求

public String executeHttpGet(){

       String result = null;

    URL url = null;

    HttpURLConnection connection;

    InputStreamReader in =null;

    try{

        url = new URL("http://10.0.2.2.:8888/data/get/?token=alexzhou");

        connection =(HttpURLConnection)url.openConnection();

        in = new InputStream(connection.getInputStream());

        BufferedReader bufferedReader = new BufferedReader(in);

        StringBuffer str = new StringBuffer();

        String line =null;

        while((line = bufferedReader.readLine()) != null){

           str.append(line);

}

          }catch(Exception e){

           e.printStackTrace();

}finally{

        if(connection != null){

       connection.disconnect();

} if(in != null){

     try{

      in.close();

}catch(IOException e){

  e.printStackTrace();

}

}

}

    return result;

}

(2)post请求

public String executeHttpPost(){

    String result = null;

    URL url =null;

    HttpURLConnection connection = null;

    InputStream in = null;

    try{

      url = new URL("http://10.0.2.2:8888/data/post");

      connection =(HttpURLConnection)url.openConnection();

      connection.setDoInput(true);

      connection.setDoOutput(true);

      connection.setRequestMethod("POST");

      connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

      connection.setRequestProperty("Charset","utf-8");

       DataOutputStream dop = new DataOutputStream(connection.getOutputStream());

      dop.writeBytes("token=alexzhou");

      dop.flush();

      dop.close();

      in = new InputStreamReader(connection.getInputStream());

      BufferedReader bufferedReader = new BufferedReader(in);

      StringBuffer str = new StringBuffer();

      String line = null;

      while((line = bufferedReader.readLine()) != null){

          str.append(line);

}

            result = str.toString();

}catch(Exception e){

e.printStackTrace()

}finally{

     if(connection != null){

         connection.disconnect();

}if(in != null){

    try{

    in.close();

}catch(IOException e){

e.printStackTrace();

}

}

}

return result;

} 

如果参数中有中文的话,可以使用下面的方式进行编码解码:

URLEncoder.encode("测试",“utf-8”);
URLDecoder.decode("测试",“utf-8”);
Apache的HttpClient:

(1)get请求

public String executeGet(){ 

     String result = null;

   BufferedReader reader = null;

   try{

         HttpClient client = new DefaultHttpClient();

     HttpGet request = new HttpGet();

     request.setURL(new URL("http://10.0.2.2:8888/data/get/?token=alexzhou"));

    HttpResponse respone =client.execute(request); 

    reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

    StringBuffer strBuffer = new StringBuffer("");

     String line = null;

     while ((line = reader.readLine()) != null) {

          strBuffer.append(line);

   }

       result = strBuffer.toString();

   catch (Exception e) {

           e.printStackTrace();

        finally {

           if (reader != null) {

             try {

                 reader.close();

                 reader = null;

              catch (IOException e) {

                 e.printStackTrace();

              }

            }

        }

        return result;

 

 

 

}

(2)post方式

public String executePost() {        
      String result =  null ;
      BufferedReader reader =  null ;
    try {

        HttpClient client = new DefaultHttpClient();

        HttpPost request = new HttpPost();

        request.setURI(new URI("http://10.0.2.2:8888/data/post/"));

        List<NameValuePair> postParameters = new ArrayList<NameValuePair>();

        postParameters.add(new BasicNameValuePair("token""alexzhou"));

        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);

        request.setEntity(formEntity);

        HttpResponse response = client.execute(request);

        reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

         StringBuffer strBuffer =  new StringBuffer( "" );           
         String line =  null ;
         while ((line = reader.readLine()) !=  null ) {
              strBuffer.append(line);
           }
              result = strBuffer.toString();
         catch (Exception e) {
             e.printStackTrace();
         finally {
             if (reader !=  null ) {
                 try {
                     reader.close();
                     reader =  null ;
                 catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
 
         return result;
     }


转载于:https://www.cnblogs.com/yuanting/p/4919442.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值