`
9alexking
  • 浏览: 8861 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android平台向web应用get、post方式提交信息案例

阅读更多

参考书:疯狂 android讲义

1、效果图展示

2、界面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    >
<Button
    android:id="@+id/get"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/get"
    />
<Button
    android:id="@+id/post"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/post"
    />        
</LinearLayout>    
<EditText  
    android:id="@+id/show"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:editable="false"
    android:cursorVisible="false"
    android:gravity="top"
    />
</LinearLayout>
 
3、改发送get、post请求的工具类,如下:
public class GetPostUtil
{
    /**
     * 向指定URL发送GET方法的请求
     * 
     * @param url
     *            发送请求的URL
     * @param params
     *            请求参数,请求参数应该是name1=value1&name2=value2的形式。
     * @return URL所代表远程资源的响应
     */
    public static String sendGet(String url, String params)
    {
        String result = "";
        BufferedReader in = null;
        try
        {
            String urlName = url + "?" + params;
            URL realUrl = new URL(urlName);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
            // 建立实际的连接
            conn.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = conn.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet())
            {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null)
            {
                result += "\n" + line;
            }
        }
        catch (Exception e)
        {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally
        {
            try
            {
                if (in != null)
                {
                    in.close();
                }
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 向指定URL发送POST方法的请求
     * 
     * @param url
     *            发送请求的URL
     * @param params
     *            请求参数,请求参数应该是name1=value1&name2=value2的形式。
     * @return URL所代表远程资源的响应
     */
    public static String sendPost(String url, String params)
    {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try
        {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(params);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReade r输入流来读取URL的响应
            in = new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null)
            {
                result += "\n" + line;
            }
        }
        catch (Exception e)
        {
            System.out.println("发送POST请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输出流、输入流
        finally
        {
            try
            {
                if (out != null)
                {
                    out.close();
                }
                if (in != null)
                {
                    in.close();
                }
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
        }
        return result;
    }
}
 
如果需要发送get请求只要调用URLConnection的connect()方法去建立实际的连接即可;如果需要发送post请求,则需要获取URLConnection的OutputStream,然后再向网络中输出请求参数,如以上程序!!!

 

4、activity程序代码

public class GetPostMain extends Activity
{
    Button get , post;
    EditText show;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        get = (Button) findViewById(R.id.get);
        post = (Button) findViewById(R.id.post);
        show = (EditText)findViewById(R.id.show);
        get.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                String response = GetPostUtil
                    .sendGet("http://192.168.65.1:8080/abc/a.jsp" , null);
                show.setText(response);
                
            }            
        });
        post.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                String response = GetPostUtil
                    .sendPost("http://192.168.65.1:8080/abc/login.jsp"
                    , "name=crazyit.org&pass=leegang");
                show.setText(response);
                
            }            
        });    
    }
}

 

该程序所发送的get、post请求都是向本地局域网内:http://192/168.65.1:8080/abc应用下两个页面发送,这个应用都是部署在本机的web应用;

 

Android—Http连接之GET/POST请求

 
   在Android SDK中提供了Apache HttpClient(org.apache.http.*)模块。在这个模块中涉及到两个重要的类:HttpGet和HttpPost。
   创建步骤:
  1、创建HttpGet(或HttpPost)对象,将要请求的URL通过构造方法传入HttpGet(或HttpPost)对象中;
   2、使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST 请求,并返回HttpResponse对象;
   3、通过HttpResponse接口的getEntity方法返回响应信息。
 
   虽然两者都是按这样的步骤来实现的,但是实际中两者又有些区别,具体代码如下:
   
   HTTP GET请求:
   String url;
   //第一步,创建HttpGet对象
   HttpGet httpGet = new HttpGet(url);
   //第二步,使用execute方法发送HTTP GET请求,并返回HttpResponse对象
   httpResponse = new DefaultHttpClient().execute(httpGet);
   if (httpResponse.getStatusLine().getStatusCode() == 200)
   {
        //第三步,使用getEntity方法活得返回结果
        String result = EntityUtils.toString(httpResponse.getEntity());
    }
 
   HTTP POST请求:
   String url;
   //第一步,创建HttpPost对象
   HttpPost httpPost = new HttpPost(url);
   //设置HTTP POST请求参数必须用NameValuePair对象
   List<NameValuePair> params = new ArrayList<NameValuePair>();
   params.add(new BasicNameValuePair("bookname", etBookName.getText().toString()));
   //设置httpPost请求参数
   httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
   //第二步,使用execute方法发送HTTP GET请求,并返回HttpResponse对象
   httpResponse = new DefaultHttpClient().execute(httpPost);
   if (httpResponse.getStatusLine().getStatusCode() == 200)
   {
        //第三步,使用getEntity方法活得返回结果
        String result = EntityUtils.toString(httpResponse.getEntity());
    }
上述就是对GET和POST方法的讲解,两者有相似的地方也有不同的地方,需要加以区别


--------------------------------

娇妻如云 http://www.510h.com

剑道独尊 http://www.95wu.com

召唤美女军团 http://www.7wg.net

分享到:
评论

相关推荐

    Android中通过GET和POST方式以及使用HttpClient框架通过网络通信提交参数给web应用案例

    本文将深入探讨如何在Android中利用这两种方式以及HttpClient框架来提交参数给Web应用。 首先,GET和POST的主要区别在于它们处理数据的方式。GET方法通常用于获取资源,其参数附加在URL后面,易于观察但对数据长度...

    Android平台Web服务的应用研究

    【Android平台Web服务的应用研究】主要探讨了在Android操作系统上如何有效地利用Web服务进行移动应用的开发。Web服务在各种领域广泛应用,对电子商务和系统集成的发展起到了推动作用。然而,传统基于SOAP的Web服务在...

    Android 请求 WebAPI的案例

    本案例"Android请求WebAPI"将详细讲解如何在Android应用中实现这一功能。WebAPI通常指的是基于HTTP协议的RESTful API,允许客户端(如Android应用)通过HTTP方法(GET、POST、PUT、DELETE等)获取或操作服务器资源。...

    Android与Web端交互源码

    在移动应用开发中,Android平台经常需要与Web端进行数据交互,以便实现用户界面与服务器数据的同步。这个"Android与Web端交互源码"是一个非常实用的学习资源,特别是对于初学者来说,它能帮助理解如何在Android应用...

    android连接java web服务器的小程序

    它们允许Android应用向Web服务器发送HTTP请求(GET、POST等)并接收响应。开发者需要处理异步任务,因为网络操作不应该在主线程上执行,以免阻塞UI。可以使用AsyncTask、IntentService或现代的LiveData、Coroutines...

    Android应用源码之通过Android客户端访问web服务器,实现一个登录功能,服务端+数据库+安卓端.zip

    总的来说,这个项目涉及到了Android客户端开发、Web服务端开发、数据库设计和网络通信等多个方面,是学习Android应用开发和服务器交互的实用案例。通过深入研究和实践这个源码,开发者可以掌握Android应用与Web...

    android webservice案例

    在Android开发中,Web Service是一种常见的数据交互方式,它允许移动应用与远程服务器进行通信,获取或发送数据。本案例“android webservice案例”聚焦于Android客户端如何调用Web Service来实现这一功能。我们将...

    android山寨WEB源代码

    这个项目可能旨在模仿知名Web服务器的功能,或者作为学习网络编程和Android平台结合的一个实践案例。以下是一些相关的重要知识点: 1. **Android基础知识**: - Android是一个开源的操作系统,主要用于移动设备,...

    实验四 Android的网络应用

    本次实验的主要目标是让学生通过实际案例学习和掌握Android平台上的网络访问方法。同时,还需要熟悉如何搭建Tomcat服务器进行Java EE开发。 #### 二、实验要求 1. **了解手机WEB网站访问编程**: - 掌握如何在...

    android 服务器+客户端的简单案例

    在Android开发中,有时我们需要构建一个能够与服务器进行交互的应用,这就涉及到了客户端与服务器的通信技术。本案例主要展示了如何使用Java Servlet作为服务器端,Android客户端进行数据交换的简单实现。 首先,让...

    Android程序研发源码Android WordPress应用博客平台.zip

    在Android平台上构建WordPress应用涉及到多个关键的技术点和概念,这些技术包括但不限于Android应用程序的基本结构、网络通信、数据解析、UI设计以及与WordPress API的交互。下面将详细阐述这些知识点: 1. **...

    android WebServices电话号码在线查询

    在这个特定的案例中,"android WebServices 电话号码归属地查询"是一个应用程序,它利用WebServices接口来查询电话号码的归属地信息。这样的功能对于用户来说非常实用,可以帮助他们识别未知来电或者了解通话费用...

    Android订餐软件-点餐应用附源代码.rar

    对于开发者而言,这份源代码提供了实际项目中的案例,有助于深入理解Android应用开发的全流程,包括客户端和服务端的交互、数据库设计、网络通信、用户界面设计等多个方面。同时,通过分析源代码,可以学习到最佳...

    Android应用源码之教务选课学生成绩管理项目-IT计算机-毕业设计.zip

    Android支持HTTP请求库,如OkHttp或Retrofit,用于发送GET和POST请求到服务器接口,获取或提交数据。可能还涉及到JSON解析,如Gson或Jackson,将服务器返回的JSON数据转化为Java对象。 4. **用户认证与授权**:为了...

    Android应用

    这些API定义了一组特定的URL和HTTP方法(GET、POST、PUT、DELETE等),允许Android应用发送请求并接收响应,实现数据的交换。 三、服务器通信 Android应用与服务器间的通信通常采用HTTP/HTTPS协议,通过JSON...

    android访问tomcat服务器

    在这个案例中,我们可能使用HTTP协议(如GET、POST)向Tomcat服务器发送数据,获取服务器响应。需要注意的是,Android 9.0(Pie)及以上版本默认禁止非安全的HTTP请求,所以项目通常会要求使用HTTPS。 2. **Tomcat...

    Android客户端与服务器交互,登录案例

    在Android客户端与服务器交互的过程中,登录功能是应用的基础部分,它允许用户验证身份并访问受保护的资源。在这个案例中,我们将深入探讨如何使用Android Studio作为客户端开发工具,MyEclipse作为服务器端开发环境...

Global site tag (gtag.js) - Google Analytics