参考书:疯狂 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方法的讲解,两者有相似的地方也有不同的地方,需要加以区别
相关推荐
本文将深入探讨如何在Android中利用这两种方式以及HttpClient框架来提交参数给Web应用。 首先,GET和POST的主要区别在于它们处理数据的方式。GET方法通常用于获取资源,其参数附加在URL后面,易于观察但对数据长度...
【Android平台Web服务的应用研究】主要探讨了在Android操作系统上如何有效地利用Web服务进行移动应用的开发。Web服务在各种领域广泛应用,对电子商务和系统集成的发展起到了推动作用。然而,传统基于SOAP的Web服务在...
本案例"Android请求WebAPI"将详细讲解如何在Android应用中实现这一功能。WebAPI通常指的是基于HTTP协议的RESTful API,允许客户端(如Android应用)通过HTTP方法(GET、POST、PUT、DELETE等)获取或操作服务器资源。...
在移动应用开发中,Android平台经常需要与Web端进行数据交互,以便实现用户界面与服务器数据的同步。这个"Android与Web端交互源码"是一个非常实用的学习资源,特别是对于初学者来说,它能帮助理解如何在Android应用...
它们允许Android应用向Web服务器发送HTTP请求(GET、POST等)并接收响应。开发者需要处理异步任务,因为网络操作不应该在主线程上执行,以免阻塞UI。可以使用AsyncTask、IntentService或现代的LiveData、Coroutines...
总的来说,这个项目涉及到了Android客户端开发、Web服务端开发、数据库设计和网络通信等多个方面,是学习Android应用开发和服务器交互的实用案例。通过深入研究和实践这个源码,开发者可以掌握Android应用与Web...
在Android开发中,Web Service是一种常见的数据交互方式,它允许移动应用与远程服务器进行通信,获取或发送数据。本案例“android webservice案例”聚焦于Android客户端如何调用Web Service来实现这一功能。我们将...
这个项目可能旨在模仿知名Web服务器的功能,或者作为学习网络编程和Android平台结合的一个实践案例。以下是一些相关的重要知识点: 1. **Android基础知识**: - Android是一个开源的操作系统,主要用于移动设备,...
本次实验的主要目标是让学生通过实际案例学习和掌握Android平台上的网络访问方法。同时,还需要熟悉如何搭建Tomcat服务器进行Java EE开发。 #### 二、实验要求 1. **了解手机WEB网站访问编程**: - 掌握如何在...
在Android开发中,有时我们需要构建一个能够与服务器进行交互的应用,这就涉及到了客户端与服务器的通信技术。本案例主要展示了如何使用Java Servlet作为服务器端,Android客户端进行数据交换的简单实现。 首先,让...
在Android平台上构建WordPress应用涉及到多个关键的技术点和概念,这些技术包括但不限于Android应用程序的基本结构、网络通信、数据解析、UI设计以及与WordPress API的交互。下面将详细阐述这些知识点: 1. **...
在这个特定的案例中,"android WebServices 电话号码归属地查询"是一个应用程序,它利用WebServices接口来查询电话号码的归属地信息。这样的功能对于用户来说非常实用,可以帮助他们识别未知来电或者了解通话费用...
对于开发者而言,这份源代码提供了实际项目中的案例,有助于深入理解Android应用开发的全流程,包括客户端和服务端的交互、数据库设计、网络通信、用户界面设计等多个方面。同时,通过分析源代码,可以学习到最佳...
Android支持HTTP请求库,如OkHttp或Retrofit,用于发送GET和POST请求到服务器接口,获取或提交数据。可能还涉及到JSON解析,如Gson或Jackson,将服务器返回的JSON数据转化为Java对象。 4. **用户认证与授权**:为了...
这些API定义了一组特定的URL和HTTP方法(GET、POST、PUT、DELETE等),允许Android应用发送请求并接收响应,实现数据的交换。 三、服务器通信 Android应用与服务器间的通信通常采用HTTP/HTTPS协议,通过JSON...
在这个案例中,我们可能使用HTTP协议(如GET、POST)向Tomcat服务器发送数据,获取服务器响应。需要注意的是,Android 9.0(Pie)及以上版本默认禁止非安全的HTTP请求,所以项目通常会要求使用HTTPS。 2. **Tomcat...
在Android客户端与服务器交互的过程中,登录功能是应用的基础部分,它允许用户验证身份并访问受保护的资源。在这个案例中,我们将深入探讨如何使用Android Studio作为客户端开发工具,MyEclipse作为服务器端开发环境...