直播app源代码,Http方式请求网络,使用Http访问网络有很多种方式,不过最常用的还是POST和GET方式。项目中正好有用到,因此就写了个工具类,方便以后的使用。
在HttpUtil类里生成一个带Handler的构造参数,之所以要生成一个带Handler的构造参数,是因为在android4.0以后,在activity里请求网络时不能放在主线程。因此通过工具类获取结果以后,把该结果通过handler返回给该界面。
下面上代码:

package com.szh.speechdemo.ui;import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;/*** http工具类,访问方式为post或者get* @author gh*/
public class HttpUtil {private Handler mHandler;public HttpUtil(Handler handler) {mHandler = handler;}public void getData(Map<String, Object> param, String type, String url) {try {if ("get".equals(type)) {try {getDataByGet(url);} catch (Throwable e) {e.printStackTrace();}} else {getDataByPost(param, url);}} catch (Exception e) {}}/*** 使用post请求方式获取网络数据* * @param param* @param url*/private void getDataByPost(final Map<String, Object> param, final String url) {new Thread(new Runnable() {@Overridepublic void run() {String data = "";Message message = new Message();Bundle bundle = new Bundle();try{HttpClient httpClient = new DefaultHttpClient();HttpPost httpPost = new HttpPost(url);List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();if(param != null){for(Map.Entry<String, Object> entry :param.entrySet()){nameValuePair.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));}httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair, "utf-8"));// 执行操作,并拿到结果HttpResponse response = httpClient.execute(httpPost);// 获取结果实体HttpEntity entity = (HttpEntity) response.getEntity();if(entity != null){data = EntityUtils.toString(entity,"utf-8");}entity.consumeContent();bundle.putString("data", data);}}catch(Exception e){e.printStackTrace();data = "服务器连接异常";bundle.putString("data", data);}message.setData(bundle);mHandler.sendMessage(message);}}).start();}/*** 使用get请求方式获取网络数据* * @param url*/private void getDataByGet(final String url_path) throws Throwable{new Thread(new Runnable() {@Overridepublic void run() {String jsonString = "";Message message =new Message();Bundle bundle = new Bundle();URL url = null;try{url = new URL(url_path);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setConnectTimeout(6000);httpURLConnection.setRequestMethod("GET");// 表示从服务器获取数据httpURLConnection.setDoOutput(true);if(httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK){// 表示连接服务器获取数据成功jsonString = ChangeInputStream(httpURLConnection.getInputStream(),"utf-8");// 传递消息到主界面,返回校验结果bundle.putString("data",jsonString);} else {jsonString = "连接服务器失败";bundle.putString("data", jsonString);}}catch(Exception e){jsonString = "连接服务器异常";bundle.putString("data", jsonString);}message.setData(bundle);mHandler.sendMessage(message);}}).start();}/*** 获取的数据结果转变成json* @param inputStream* @param string* @return*/protected String ChangeInputStream(InputStream inputStream, String encode) {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] data = new byte[1024];int len = 0;String jsonString = "";if(inputStream != null){try{while((len = inputStream.read(data)) != -1){outputStream.write(data, 0, len);}jsonString = new String(outputStream.toByteArray(),encode);}catch(Exception e){e.printStackTrace();}}return jsonString;}}

从代码里可以看到,有POST和GET两种请求方式。至于具体用法,举个例子:

package com.szh.speechdemo.activity;import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import com.szh.speechdemo.ui.HttpUtil;public class HttpRequestTest extends Activity{private Handler mHandler = new Handler(){public void handleMessage(android.os.Message msg) {String data = msg.getData().getString("data");};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);String url = "写自己的请求路径";// 创建httputil对象HttpUtil httpUtil = new HttpUtil(mHandler);Map<String ,Object> map = new HashMap<String,Object>();map.put("id","");// 获取数据,如果是get请求方式,map参数可以是nullhttpUtil.getData(map, "post", url);}
}

以上就是 直播app源代码,Http方式请求网络,更多内容欢迎关注之后的文章

直播app源代码,Http方式请求网络相关推荐

  1. 直播app源代码,android弹框的几种操作

    直播app源代码,实现android弹框几种操作的相关代码 在android中创建文本框:这里是创建了一个list列表式的文本框 package com.example.dialog3;import ...

  2. 想要进行直播app源代码开发就要懂的音频知识

    本片文章主要介绍音频基础知识,在开发直播app源代码之前首先必须要对音频的相关概念了解.以下是具体内容概述: 常见的音频格式 WAV MP3 WMA RA APE PCM AAC 音频相关的参数 采样 ...

  3. 直播APP源代码之如何搭建红包秒杀功能

    直播APP源代码之如何搭建红包秒杀功能 yaf项目快速开发(兼容php7): yaf project rapid development, integration of the db action c ...

  4. 直播app源代码,手机屏幕截取并保存到手机相册

    直播app源代码,实现手机屏幕截取并保存到手机相册功能的代码 public void convertViewToBitmap(View a) {//用时间来命名文件名SimpleDateFormat ...

  5. 直播app源代码 直播软件开发Android UI动画 仿直播点赞飘心动画效果

    直播app源代码 直播软件开发Android UI动画 仿直播点赞飘心动画效果 一个飘心的小动画,之前看也看到网上有很多轮子,但是感觉不是很符合我的需求,所以自己就凑活凑活搞出来一个,废话不多说先看图 ...

  6. Android直播app源代码超简单气泡效果

    Android直播app源代码超简单气泡效果实现的相关代码 1.1 定义气泡 气泡效果我们关心的属性并不多,主要有这几种:半径.坐标.上升速度.水平平移速度.由于我们只在 View 内部使用,因此直接 ...

  7. 直播app源代码,echarts 柱状图,折线图互转实例

    直播app源代码,echarts 柱状图,折线图互转实例的相关代码 function initDayChart(){var myChart = echarts.init(document.getEle ...

  8. 直播app源代码,python 获取日期时间总结

    直播app源代码,python 获取日期时间总结 获取当前日期 import datetimetoday = datetime.date.today() 获取昨天日期 import datetime# ...

  9. 直播app源代码,验证码输入页面

    直播app源代码,验证码输入页面相关的代码 VerifyCodeActivity.java 主页面 public class VerifyCodeActivity extends BaseActivi ...

最新文章

  1. 我离开Uber,开始自主创业后......
  2. 计算机网络基础 — 网络设备类型
  3. 知识图谱 (知识计算推理)
  4. 002 辅助框架的设计
  5. 利用SQL05特性删除表中重复数据
  6. golang 数组组合成最小的整数_golang数组-----寻找数组中缺失的整数方法
  7. Centos7+Nginx+Keepalived实现Apache服务的高可用负载均衡
  8. %@include%和jsp:include的区别
  9. 拍照尺寸 ios_iOS 14照片和相机:QuickTake快捷键,照片标题,镜像自拍照等
  10. 日常记录(4)让百度和google收录我们的网站
  11. VS2010 编译 openssl 源代码(输出 libeay32 and ssleay32 静态库和动态库)
  12. 23考研倒计时,冲刺阶段这样做事半功倍!
  13. 微信服务号只有域名没有80端口怎么办
  14. iOS 学习视频 资料集合 (视频 +博客)
  15. 水处理过滤器:多介质过滤器结构组成及技术参数
  16. winform程序内存不足或假死的问题
  17. Android GMS (谷歌移动服务)
  18. python批量修改字典的键或值
  19. 软件构造复习小结(2)——设计规约(Specification)
  20. bookkeeper metadata 获取及密码安全

热门文章

  1. 汇编语言学习笔记06——加减乘除和其他一些指令
  2. redhat6.3 jfreechar中文乱码解决途径
  3. vbs脚本实现Ping功能
  4. 利用证书签名绕过杀软
  5. sql server获取库名,表名
  6. 面试篇1:嵌入式C语言面试常见问题
  7. 【预研】关于互联网广告:半小时读懂互联网广告新生态
  8. 黑白图转RGB(Matlab)
  9. 政策重大升级、成立最强行业联盟,上海要做长三角区块链产业发展领头羊?...
  10. Qt6-在线获取和安装