Android自定义网络连接工具类HttpUtil

本文实例为大家分享了Android网络连接工具类HttpUtil的使用方法,供大家参考,具体内容如下

该工具实现了发送get和post请求,请求的结果以String字符串的形式返回,比较适合接收服务器端发送过来的JSON字符串数据

get方法适合从服务器端获取数据
post方法适合发送数据到服务器端

使用的时候直接调用get或post方法就好

get方法传递一个url请求
post方法传递一个url请求和要发送到服务器端的数据params

接收数据后返回的是一个String字符串

HttpUtil.java

public class HttpUtil{
  /**
   * POST方法提交HTTP请求,返回请求的结果
   *
   * @param url
   * @param params
   * @return 请求结果
   * @throws IOException
   */
  public static String sendPost(String url, String params) throws IOException {
    StringBuffer result = new StringBuffer(); 

    // 创建URL对象
    URL _url = new URL(url);
    // 创建HTTP连接
    /**
     * 使用.openConnection()方法实例化一个URLConnection对象
     * */
    HttpURLConnection conn = (HttpURLConnection) _url.openConnection(); 

    // 以下设置网络连接的相关参数
    /* 使用POST方法进行请求传递时,必须定义setDoInput和setDoOutput方法 */
    // 设置输入可用
    conn.setDoInput(true);
    // 设置输出可用
    conn.setDoOutput(true); 

    // 设置不使用缓存
    conn.setUseCaches(false);
    // 设置连接超时的时间 - 5s
    conn.setConnectTimeout(5000);
    // 设置读取超时的时间 - 5s
    conn.setReadTimeout(5000);
    // 设置HTTP请求的方法 - POST
    conn.setRequestMethod("POST");
    // 设置HTTP请求属性 - 连接方式:保持
    conn.setRequestProperty("Connection", "Keep-Alive");
    // 设置HTTP请求属性 - 字符集:UTF-8
    conn.setRequestProperty("Charset", "UTF-8");
    // 设置HTTP请求属性 - 传输内容的类型 - 简单表单
    conn.setRequestProperty("Content-Type",
        "application/x-www-form-urlencoded");
    // 设置HTTP请求属性 - 传输内容的长度
    conn.setRequestProperty("Content-Length",
        String.valueOf(params.length()));
    // 设置HTTP请求属性 - 用户代理
    conn.setRequestProperty("User-Agent",
        "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
    // 发送参数 ,采用字符流发送数据
    PrintWriter pw = new PrintWriter(conn.getOutputStream());
    pw.write(params);
    pw.flush();
    pw.close();
    // 获取返回的结果
    if (200 == conn.getResponseCode()) {// 判断状态码
      // 读取服务器返回的 结果 - 字符流
      BufferedReader br = new BufferedReader(new InputStreamReader(
          conn.getInputStream()));
      // 每次读取一行
      String line;
      while((line = br.readLine()) != null){
        result.append(line);
      }
    }
    // 关闭HTTP连接
    conn.disconnect();
    return result.toString();
  } 

  /**
   * GET方法提交HTTP请求,返回请求的结果
   * @param url
   * @return 请求的结果
   * @throws IOException
   */
  public static String sendGet(String url) throws IOException { 

    StringBuffer result = new StringBuffer();
    // 创建URL对象
    URL _url = new URL(url);
    // 创建HTTP连接
    HttpURLConnection conn = (HttpURLConnection) _url.openConnection();
    // 设置网络连接的相关参数
    // 设置输入可用
    conn.setDoInput(true);
    // 设置输出可用
    conn.setDoOutput(true);
    // 设置不使用缓存
    conn.setUseCaches(false);
    // 设置连接超时的时间 - 5s
    conn.setConnectTimeout(5000);
    // 设置读取超时的时间 - 5s
    conn.setReadTimeout(5000);
    // 设置HTTP请求的方法 - GET
    conn.setRequestMethod("GET");
    // 设置HTTP请求属性 - 连接方式:保持
    conn.setRequestProperty("Connection", "Keep-Alive");
    // 设置HTTP请求属性 - 字符集:UTF-8
    conn.setRequestProperty("Charset", "UTF-8");
    // 设置HTTP请求属性 - 用户代理
    conn.setRequestProperty("User-Agent",
        "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
    // 获取返回的结果
    if (200 == conn.getResponseCode()) {// 判断状态码
      BufferedReader br = new BufferedReader(new InputStreamReader(
          conn.getInputStream()));
      // 每次读取一行
      String line;
      while((line = br.readLine()) != null){
        result.append(line);
      }
    }
    // 关闭HTTP连接
    conn.disconnect();
    return result.toString();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 超实用的android网络工具类
  • Android网络工具类NetworkUtils详解
  • Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】
  • Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】
  • android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)
  • Android检查网络状态工具类详解
(0)

相关推荐

  • 超实用的android网络工具类

    在实际开发中,往往一些工具类对我们的帮助是非常大的,借此,我在前人各位前辈的基础上,整理了一个网络的工具类,特此献上: /** * @类名:NetUtil * @类描述:网络判断处理类 * @创建时间:2015年2月12日-上午9:34:32 * @修改人: * @修改时间: * @修改备注: * @版本: */ public class NetUtil { /* 网络状态 */ public static boolean isNet = true; public static enum net

  • Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】

    本文实例讲述了Android开发中4个常用的工具类.分享给大家供大家参考,具体如下: 1.土司工具类(Toast管理) /** * Toast统一管理类 * * @Project App_ZXing * @Package com.android.scan * @author chenlin * @version 1.0 * @Date 2013年7月6日 * @Note TODO */ public class ToastUtil { private ToastUtil() { /* canno

  • Android网络工具类NetworkUtils详解

    网络工具类NetworkUtils,供大家参考,具体内容如下 提供的方法: 打开网络设置界面 openWirelessSettings 判断网络是否可用 isAvailable 判断网络是否连接 isConnected 判断网络是否是4G is4G 判断wifi是否连接状态 isWifiConnected 获取移动网络运营商名称 getNetworkOperatorName 获取移动终端类型 getPhoneType 获取当前的网络类型(WIFI,2G,3G,4G) getNetWorkType

  • Android检查网络状态工具类详解

    在Android中开发具有网络交互的应用时候,有时候我们需要检查网络状态才能确定是否去请求网络,就需要用到公共类 代码: package com.example.ldp.com.util; /** * Created by Administrator on 2017/4/7. */ import android.content.Context; import android.app.Activity; import android.app.AlertDialog; import android.

  • Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】

    本文实例讲述了Android开发之超实用的系统管理工具类.分享给大家供大家参考,具体如下: 这是一个系统管理工具类,管理sd卡,判断网络,uri转换,获取屏幕宽高,获取网络类型,隐藏软键盘,复制文本到粘贴板,获取状态栏高度,获取当前进程等. 上代码 import java.io.File; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity

  • android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)

    复制代码 代码如下: public class CommonUtil { public static boolean hasSDCard() { String status = Environment.getExternalStorageState();  return status.equals(Environment.MEDIA_MOUNTED); } /**  * 获取最大内存  *   * @return  */ public static long getMaxMemory() { r

  • Android自定义网络连接工具类HttpUtil

    本文实例为大家分享了Android网络连接工具类HttpUtil的使用方法,供大家参考,具体内容如下 该工具实现了发送get和post请求,请求的结果以String字符串的形式返回,比较适合接收服务器端发送过来的JSON字符串数据 get方法适合从服务器端获取数据 post方法适合发送数据到服务器端 使用的时候直接调用get或post方法就好 get方法传递一个url请求 post方法传递一个url请求和要发送到服务器端的数据params 接收数据后返回的是一个String字符串 HttpUti

  • Android TextView显示Html类解析的网页和图片及自定义标签用法示例

    本文实例讲述了Android TextView显示Html类解析的网页和图片及自定义标签.分享给大家供大家参考,具体如下: Android系统显示HTML网页的最佳控件为WebView,有时候为了满足特定需求,需要在TextView中显示HTML网页.图片及解析自定义标签. 1.TextView显示Html类解析的网页 CharSequence richText = Html.fromHtml("<strong>萝卜白菜的博客</strong>--<a href='

  • 实例讲解Android中的View类以及自定义View控件的方法

    View的简单理解和实例 1.View的基本概念 在Activity显示的控件 都叫做View(View类 是所有的控件类的父类  比如 文本 按钮) 2.在Activity当中获取代表View的对象 Activity读取布局文件生成相对应的 各种View对象 TextView textView=(TextView)findViewBy(R.id.textView) 3.设置view的属性 Activity_mian.xml 这样的xml布局文件中发现了,类似@+id/和@id/到底有什么区别呢

  • Android Studio 下自动注释(自定义作者,类作用等)图文详解

    Eclipse 的自动注释相信大家都不会陌生,http://www.jb51.net/article/105094.htm,来到Android Studio之后我们会发现这个有用的功能竟然没有!(其实是被Android Studio隐藏了),鼓捣一番也就那么回事-.- 很简单,首先打开你的Android Studio  在工具栏点击如图小图标 然后在进入页面里搜索:File and Code Templates,如图 再如图 新建一个类试试 总结 以上所述是小编给大家介绍的Android Stu

  • 超实用的android自定义log日志输出工具类

    android自定义log日志输出工具,该工具类具有以下优点: 1 在LogUtlis方法的第一个参数中填this可以输出当前类的名称,特别是在匿名内部类使用也可以输出当前类名. 如 : LogUtils.i(this,"这是一个实用的日志工具类") 或 LogUtils.i(类名.class,"这是一个实用的日志工具类"). 效果:比如我在MainActivity中直接LogUtils.i(this,"logTest"),配合自己喜欢的标志,结

  • Android自定义有限制区域的图例角度自识别涂鸦工具类完结篇

    目录 引言 总结 引言 上文Android:实现一个自定义有限制区域的图例(角度自识别)涂鸦工具类(中)中我们已经实现了在复杂的异形区域中涂鸦,最后生成图片保存的功能.这篇我们将继续升华,在此基础上实现涂鸦图片方向和手势方向保持一致的功能. 首先涂鸦如果要使用自定义的图片进行涂色,我们要如何实现呢?其实在Paint中提供了一个着色器属性,我们可以根据需求设置对应的着色器. //设置着色器 public Shader setShader(Shader shader) { // If mShader

  • Android自定义有限制区域图例角度自识别涂鸦工具类中篇

    目录 引言 总结 引言 上文Android:实现一个自定义有限制区域的图例(角度自识别)涂鸦工具类(上)中我们已经实现了自定义View签名的功能,包含撤回.清除方法.但我们最终要实现的功能还不止如此,这篇我们就来说说给限制区域内签名的实现过程. 试想,既然是自定义View了,那么如果要限制用户在指定区域内签名,最好的办法不是在触摸的时候通过坐标点的判断添加一些拦截吗?没错,起初我也是这么想的,但是再看到限制区域的图形后,我陷入了深深的沉思...... 没错,就是这样的图,这还是其中的一张,后期指

随机推荐