Android中客户端请求服务器端的方式讲解(一)附源码

Android中客户端请求服务器端的两种方式:Post方式和Get方式

在这里不直接赘述了,直接上源码如下:

(1).Post的方式:

/**
     * Post的请求方式
     *
     * @param model
     *            请求序号
     * @param paramList
     *            客户端请求的数据参数列表
     * @return
     */
    public JSONObject doPost(int model, List<NameValuePair> paramList) {

        try {
            // 客户端向服务器发送请求的数据
            List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
            params.add(new BasicNameValuePair("param1", "中国"));
            params.add(new BasicNameValuePair("param2", "美国"));

            // 1.定义请求的方式对象:
            HttpPost post = new HttpPost(Base_URL);
            // 2.定义请求的客户端对象
            HttpClient client = new DefaultHttpClient();

            // 将请求的数据封装在实体类中
            HttpEntity entity = new UrlEncodedFormEntity(paramList, HTTP.UTF_8);
            // 将实体类放置在URL中
            post.setEntity(entity);
            // 3.执行请求,返回响应的对象
            HttpResponse response = client.execute(post);
            if (response != null
                    && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 获得从服务器中返回的结果:从服务器中返回的结果是字符串的形式
                String result = EntityUtils.toString(response.getEntity(),
                        HTTP.UTF_8);
                if (result.startsWith("{")) {
                    try {
                        return new JSONObject(result);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

(2).Get方式:

 /**
     *
     * @param model
     *            请求序号
     * @param paramList
     *            客户端请求的数据参数列表
     * @return
     */
    public JSONObject doGet(int model, List<NameValuePair> paramList) {

        // 客户端向服务器发送请求的数据
        // List<BasicNameValuePair> params = new
        // ArrayList<BasicNameValuePair>();
        // params.add(new BasicNameValuePair("param1", "中国"));
        // params.add(new BasicNameValuePair("param2", "美国"));
        // 对参数编码
        String param = URLEncodedUtils.format(paramList, HTTP.UTF_8);

        // 将URL与参数拼接
        // HttpGet get = new HttpGet(Base_URL + "?" + param);
        HttpGet get = new HttpGet(Base_URL + "?" + param);
        HttpClient httpClient = new DefaultHttpClient();

        try {
            // 发起GET请求
            HttpResponse response = httpClient.execute(get);
            if (response != null
                    && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 从服务器中获得响应的数据
                String result = EntityUtils.toString(response.getEntity(),
                        HTTP.UTF_8);
                try {
                    return new JSONObject(result);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

整个工具类代码如下:

package com.chengdong.su.downloaddemo.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * 客户端向服务器端请求的工具
 *
 * @author scd
 *
 */
public class HttpUtil {
    /** 请求的URL */
    private String Base_URL = "http://www.baidu.com";
    /** TAG */
    private String TAG = getClass().getSimpleName();

    /**
     * Post的请求方式
     *
     * @param model
     *            请求序号
     * @param paramList
     *            客户端请求的数据参数列表
     * @return
     */
    public JSONObject doPost(int model, List<NameValuePair> paramList) {

        try {
            // 客户端向服务器发送请求的数据
            List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
            params.add(new BasicNameValuePair("param1", "中国"));
            params.add(new BasicNameValuePair("param2", "美国"));

            // 1.定义请求的方式对象:
            HttpPost post = new HttpPost(Base_URL);
            // 2.定义请求的客户端对象
            HttpClient client = new DefaultHttpClient();

            // 将请求的数据封装在实体类中
            HttpEntity entity = new UrlEncodedFormEntity(paramList, HTTP.UTF_8);
            // 将实体类放置在URL中
            post.setEntity(entity);
            // 3.执行请求,返回响应的对象
            HttpResponse response = client.execute(post);
            if (response != null
                    && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 获得从服务器中返回的结果:从服务器中返回的结果是字符串的形式
                String result = EntityUtils.toString(response.getEntity(),
                        HTTP.UTF_8);
                if (result.startsWith("{")) {
                    try {
                        return new JSONObject(result);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

    /**
     *
     * @param model
     *            请求序号
     * @param paramList
     *            客户端请求的数据参数列表
     * @return
     */
    public JSONObject doGet(int model, List<NameValuePair> paramList) {

        // 客户端向服务器发送请求的数据
        // List<BasicNameValuePair> params = new
        // ArrayList<BasicNameValuePair>();
        // params.add(new BasicNameValuePair("param1", "中国"));
        // params.add(new BasicNameValuePair("param2", "美国"));
        // 对参数编码
        String param = URLEncodedUtils.format(paramList, HTTP.UTF_8);

        // 将URL与参数拼接
        // HttpGet get = new HttpGet(Base_URL + "?" + param);
        HttpGet get = new HttpGet(Base_URL + "?" + param);
        HttpClient httpClient = new DefaultHttpClient();

        try {
            // 发起GET请求
            HttpResponse response = httpClient.execute(get);
            if (response != null
                    && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 从服务器中获得响应的数据
                String result = EntityUtils.toString(response.getEntity(),
                        HTTP.UTF_8);
                try {
                    return new JSONObject(result);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 00:17:29

Android中客户端请求服务器端的方式讲解(一)附源码的相关文章

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

Web 开发中很实用的10个效果【附源码下载】

在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记得收藏:) 超炫的页面切换动画效果 今天我们想与大家分享一组创意的页面切换熊效果集合.我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果. 立即下载      在线演示 美!视差滚动在图片滑块中的应用 视差滚动(Parallax Scrolling)已经被广泛应用于网

【转载】Web 开发中很实用的10个效果【附源码下载】

超炫的页面切换动画效果 今天我们想与大家分享一组创意的页面切换熊效果集合.我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果. 立即下载      在线演示 美!视差滚动在图片滑块中的应用 视差滚动(Parallax Scrolling)已经被广泛应用于网页设计中,这种技术能够让原本平面的网页界面产生动感的立体效果.美女很养眼吧 :) 源码下载      在线演示 网页边栏过渡动画 以细微的过渡动画显示一些隐藏的侧边栏,其余的内容也是.通常侧边栏滑入,把其他内容推

C#中的WinFrom技术实现串口通讯助手(附源码)

C#中的WinFrom技术实现串口通讯助手(附源码) ??实现的功能: 1.实现自动加载可用串口. 2.打开串口,并且使用C#状态栏显示串口的状态. 3.实现了串口的接收数据和发送数据功能. 4.串口使用定时器进行定时发送数据. 5.可以打开文件夹,选择文件进行发送,并且将发送文件的内容显示在发送文本框中. 6.可以清空发送和接收文本框中的内容. 7.可以实时计算发送和接收的字节数. 8.实现打开文件夹保存发送和接收的文件内容(目前只支持.txt文件). 9.实时显示当前时间. ??功能演示 1

管窥Android中的滑动条SeekBar的父类AbsSeekBar的源码

Android中的控件中有一类是ProgressBar,其子类中有一个是AbsSeekBar.相信有不少童鞋对这个拖动条的父类比较感兴趣吧!尤其是看到网易云音乐的进度条上面是可以处理播放与暂停事件,是不是很羡慕的哈~  俺在这里告诉大家,不用羡慕,看了我下面的代码分析,你也是可以做出那样的效果的哦.Let's go. 下面先给大家列表一下AbsSeekBar的成员变量有哪些. //当前的矩形 private final Rect mTempRect = new Rect(); //可以拖动的滑块

Spring中@Transactional事务回滚(含实例详细讲解,附源码)

原文出处: 小宝鸽 一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员.但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了.这时候我们希望如果成员删除失败了,之前删除的部门也取消删除.这种场景就可以使用@Transactional事物回滚. 二.che

Android 使用ViewPager真正实现左右无限滑动(附源码)

前言 网上有很多使用ViewPager实现左右滑动这一效果的资料,这些资料大多数都是将PagerAdapter中getCount()方法的返回值设为Integer.MAX_VALUE使用户看不到边界,然后在instantiateItem()方法中通过position%(要循环显示的数据集的长度)的方式取得对应的数据集.这样虽然可以做到无限循环,但是会有两个弊端:首先会创建大量对象,容易引起内存溢出(循环加载图片)从而影响性能:其次从第一页向右滑动的时候是无法滑动的. 今天给大家分享的是另一种实现

网站开发中必备的8个 jQuery 效果【附源码】

jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式.它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuery 插件可供使用.看看下面这些惊人的功能和效果,我相信你会发现一些很有用的东西. 基于 jQuery 实现的 Ajax 异步分页 jPages 是一款非常不错的客户端分页插件,有很多特色,例如自动播放.按键翻页.延迟加载等等 源码下载      在线演示 老牌的响应式 jQuery 幻灯片效果 Sl

Android 音视频深入 二 AudioTrack播放pcm(附源码下载)

本篇项目地址,名字是录音和播放PCM,求starhttps://github.com/979451341/Audio-and-video-learning-materials 1.AudioTrack官方说明AudioTrack允许PCM音频缓冲器流到音频接收器进行回放.这是通过"推"的数据对象的信号使用 write(byte[], int, int) and write(short[], int, int) 方法.一个信号可以在两种模式下运行:静态或流.在流模式中,应用程序写一个连续