Android客户端post请求服务器端实例

Android客户端请求服务器端的详细解释

1. Android客户端与服务器端通信方式:
Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。
2. 解析服务器端返回数据的解释:
(1).对于服务器端来说,返回给客户端的数据格式一般分为html、xml和json这三种格式。
(2). JSON(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换。
3. Android中,用GET和POST访问http资源
(1).客户端向服务器端发送请求的时候,向服务器端传送了一个数据块,也就是请求信息。
(2). GET和POST区别:
A: GET请求请提交的数据放置在HTTP请求协议头(也就是url)中,而POST提交的数据则放在实体数据中,安全性比较高。
B: GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

注意:考虑到POST的优势,在Android开发中自己认为最好用POST的请求方式,所以下面自己写了一个小的POST请求的例子。代码如下:

package com.scd.jsondemo.util;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.HttpPost;
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;

public class JsonUtil {
  /** 地址 */
  private static final String INNER_URL = "http://localhost:8080/index2.jsp";
  /** TAG */
  private final String TAG = getClass().getSimpleName();
  private static final int USER_ID = 1;

  /***
   * 客户端调用的方法:传递参数向服务器中发送请求
   *
   * @param userId
   * @param userName
   * @return
   */
  public static JSONObject getData(String userId, String userName) {
    int modelId = USER_ID;
    List<NameValuePair> list = new ArrayList<NameValuePair>();
    list.add(new BasicNameValuePair("userId", userId));
    list.add(new BasicNameValuePair("userName", userName));

    return doPost(modelId, list);
  }

  /**
   * 请求服务器的方法
   *
   * @param model
   * @param paramList
   * @return
   */
  private static JSONObject doPost(int model, List<NameValuePair> paramList) {

    // 1.创建请求对象
    HttpPost httpPost = new HttpPost(INNER_URL);
    // post请求方式数据放在实体类中
    HttpEntity entity = null;
    try {
      entity = new UrlEncodedFormEntity(paramList, HTTP.UTF_8);
      httpPost.setEntity(entity);
    } catch (UnsupportedEncodingException e1) {
      e1.printStackTrace();
    }

    // 2.创建客户端对象
    HttpClient httpClient = new DefaultHttpClient();
    // 3.客户端带着请求对象请求服务器端
    try {
      // 服务器端返回请求的数据
      HttpResponse httpResponse = httpClient.execute(httpPost);
      // 解析请求返回的数据
      if (httpResponse != null
          && httpResponse.getStatusLine().getStatusCode() == 200) {
        String element = EntityUtils.toString(httpResponse.getEntity(),
            HTTP.UTF_8);
        if (element.startsWith("{")) {
          try {
            return new JSONObject(element);
          } catch (JSONException e) {
            e.printStackTrace();
          }
        }
      }

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

    return null;

  }

}
(0)

相关推荐

  • android平台HttpGet、HttpPost请求实例

    使用HttpClient中的HttpGet()方法进行http通信的实例: 复制代码 代码如下: /**   *description:Android HttpGet()   *authour:YanEr·Gates   *website:http://www.jb51.net */ package me.gogogoog; import java.io.IOException; import org.apache.http.HttpResponse;import org.apache.http

  • 详解Android中使用OkHttp发送HTTP的post请求的方法

    HTTP POST 和 PUT 请求可以包含要提交的内容.只需要在创建 Request 对象时,通过 post 和 put 方法来指定要提交的内容即可. HTTP POST 请求的基本示例: public class PostString { public static void main(String[] args) throws IOException { OkHttpClient client = new OkHttpClient(); MediaType MEDIA_TYPE_TEXT

  • Android使用httpPost向服务器发送请求的方法

    本文实例讲述了Android使用httpPost向服务器发送请求的方法.分享给大家供大家参考,具体如下: import java.util.List; 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

  • Android中使用OkHttp包处理HTTP的get和post请求的方法

    概览 http是现在主流应用使用的网络请求方式, 用来交换数据和内容, 有效的使用HTTP可以使你的APP 变的更快和减少流量的使用 OkHttp 是一个很棒HTTP客户端(GitHub主页:https://github.com/square/okhttp): 支持SPDY, 可以合并多个到同一个主机的请求 使用连接池技术减少请求的延迟(如果SPDY是可用的话) 使用GZIP压缩减少传输的数据量 缓存响应避免重复的网络请求 当你的网络出现拥挤的时候,就是OKHttp 大显身手的时候, 它可以避免

  • android post请求接口demo

    本文实例为大家分享了android post请求接口demo测试代码,供大家参考,具体内容如下 MainActivity.java package com.tsh.test; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import android.app.Ac

  • Android HttpClient GET或者POST请求基本使用方法

    在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想象成一个浏览器,通过它的API我们可以很方便的发出GET,POST请求(当然它的功能远不止这些) 这里只介绍如何使用HttpClient发起GET或者POST请求 GET 方式 复制代码 代码如下: //先将参数放入List,再对参数进行URL编码 List<BasicNameValuePair>

  • android AsynTask处理返回数据和AsynTask使用get,post请求

    Android是一个单线程模型,Android界面(UI)的绘制都只能在主线程中进行,如果在主线程中进行耗时的操作,就会影响UI的绘制和事件的响应.所以在android规定,不可在主线中进行耗时操作,否则将发生程序无响应(ANR)问题. 解决办法:开启新的线程进行耗时操作 开启新的线程可以new Thread() 或实现Runnable接口 什么要使用AsyncTask呢? 如果是使用Thread的run()方法,run()结束之后没有返回值.所以必须要自己建立通信机制 AsyncTask将所有

  • Android中使用Post请求的方法

    本文实例讲述了Android中使用Post请求的方法.分享给大家供大家参考.具体如下: 一.需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了. 二.需要用到的主要类 在android中使用post请求主要要用到的类是HttpPost.HttpResponse.EntityUtils 三.主要思路 1.创建HttpPost实例,设置需要请求服务器的url. 2.为创建的HttpPo

  • Android下通过httpClient发送GET和POST请求的实例代码

    复制代码 代码如下: public class HttpUtil { public static String sendDataByHttpClientGet(String path,String name,String pass){        String result = "";        //1.获取到一个浏览器        HttpClient client = new DefaultHttpClient();        //2.准备请求的地址        tr

  • Android发送GET与POST请求的DEMO详解

    4.0后网络访问必须单独起一个子线程访问,否则无法运行,这里有一个发送请求的工具类GetPostUtil 复制代码 代码如下: public class GetPostUtil{ /**  * 向指定URL发送GET方法的请求  *   * @param url  *            发送请求的URL  * @param params  *            请求参数,请求参数应该是name1=value1&name2=value2的形式.  * @return URL所代表远程资源的

随机推荐