`

Android入门:发送HTTP的GET和POST请求

 
阅读更多

服务器端代码

[java] 
package org.xiazdong.servlet; 
 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
@WebServlet("/PrintServlet") 
public class PrintServlet extends HttpServlet { 
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"); 
        String age = new String(request.getParameter("age").getBytes("ISO-8859-1"),"UTF-8"); 
        System.out.println("姓名:"+name+"\n年龄:"+age); 
    } 
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        request.setCharacterEncoding("UTF-8"); 
        System.out.println("姓名:"+request.getParameter("name")+"\n年龄:"+request.getParameter("age")); 
    } 

 

Android端代码

[java]
package org.xiazdong.network.submit; 
 
import java.io.OutputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.net.URLEncoder; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
 
public class MainActivity extends Activity { 
    private EditText name, age; 
    private Button getbutton, postbutton; 
    private OnClickListener listener = new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
            try{ 
                if (getbutton == v) { 
                    /*
                     * 因为是GET请求,所以需要将请求参数添加到URL后,并且还需要进行URL编码
                     * URL = http://192.168.0.103:8080/Server/PrintServlet?name=%E6%88%91&age=20
                     * 此处需要进行URL编码因为浏览器提交时自动进行URL编码
                     * */ 
                    StringBuilder buf = new StringBuilder("http://192.168.0.103:8080/Server/PrintServlet"); 
                    buf.append("?"); 
                    buf.append("name="+URLEncoder.encode(name.getText().toString(),"UTF-8")+"&"); 
                    buf.append("age="+URLEncoder.encode(age.getText().toString(),"UTF-8")); 
                    URL url = new URL(buf.toString()); 
                    HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
                    conn.setRequestMethod("GET"); 
                    if(conn.getResponseCode()==200){ 
                        Toast.makeText(MainActivity.this, "GET提交成功", Toast.LENGTH_SHORT).show(); 
                    } 
                    else Toast.makeText(MainActivity.this, "GET提交失败", Toast.LENGTH_SHORT).show(); 
                } 
                if (postbutton == v) { 
                    /*
                     * 如果是POST请求,则请求参数放在请求体中,
                     * name=%E6%88%91&age=12
                     * 
                     * */ 
                    StringBuilder buf = new StringBuilder(); 
                    buf.append("name="+URLEncoder.encode(name.getText().toString(),"UTF-8")+"&"); 
                    buf.append("age="+URLEncoder.encode(age.getText().toString(),"UTF-8")); 
                    byte[]data = buf.toString().getBytes("UTF-8"); 
                    URL url = new URL("http://192.168.0.103:8080/Server/PrintServlet"); 
                    HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
                    conn.setRequestMethod("POST"); 
                    conn.setDoOutput(true); //如果要输出,则必须加上此句 
                    OutputStream out = conn.getOutputStream(); 
                    out.write(data); 
                    if(conn.getResponseCode()==200){ 
                        Toast.makeText(MainActivity.this, "GET提交成功", Toast.LENGTH_SHORT).show(); 
                    } 
                    else Toast.makeText(MainActivity.this, "GET提交失败", Toast.LENGTH_SHORT).show(); 
                } 
            } 
            catch(Exception e){ 
                 
            }   www.2cto.com
        } 
    }; 
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        name = (EditText) this.findViewById(R.id.name); 
        age = (EditText) this.findViewById(R.id.age); 
        getbutton = (Button) this.findViewById(R.id.getbutton); 
        postbutton = (Button) this.findViewById(R.id.postbutton); 
        getbutton.setOnClickListener(listener); 
        postbutton.setOnClickListener(listener); 
    } 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android App开发入门范例程序

    - HTTP请求:使用HttpURLConnection或OkHttp发送GET和POST请求。 - JSON解析:解析和序列化JSON数据,如使用Gson或Jackson库。 - 异步任务:了解AsyncTask,用于执行后台操作并更新UI。 7. **Ch09 - 服务和服务...

    [Android开发从入门到精通].扶松柏光盘源代码.rar

    - HTTP请求:使用HttpURLConnection和HttpClient发送GET/POST请求。 - JSON解析:Gson和Jackson库用于解析JSON数据,构建对象模型。 - ASyncTask:处理后台任务,防止阻塞主线程。 - IntentService:后台服务...

    Android开发应用从入门到精通.pdf

    - **HTTP请求**:使用HttpClient或Volley等库发送GET或POST请求获取网络数据。 - **JSON解析**:将服务器返回的JSON数据转换为Java对象以便处理。 #### 3. 多媒体开发 - **Camera API**:使用摄像头拍照或录制视频...

    Android-HTT.zip_android_htt:2360.com

    理解HTTP请求方法(GET、POST等)、状态码(200、404等)以及Header和Body的概念,是进行网络编程的基础。 三、Android中的HTTP通信 1. 使用HttpURLConnection:这是Android SDK内置的HTTP库,支持HTTP/1.1协议。...

    Android开发入门实战教程

    理解HTTP协议和JSON数据格式,以及如何使用这些库发送GET、POST请求,是开发网络应用的基础。 Android的通知系统允许应用程序在后台与用户交互,学会创建和管理通知是提升用户体验的重要一环。同时,权限管理也是...

    Android应用开发36计 电子版Android入门书籍

    网络编程是现代移动应用不可或缺的一部分,因此书中也会讲解如何使用HTTP协议进行网络通信,包括使用AsyncTask或者Retrofit库来发送GET和POST请求,以及解析JSON数据。 最后,书中还会涉及一些高级主题,如多线程与...

    android 调用webservice 的简单登陆项目

    为了发送GET或POST请求,Android开发者通常会使用HttpURLConnection、OkHttp或者Volley等库。OkHttp是高效的网络库,提供了简洁的API,而Volley则优化了网络请求的缓存和并发处理。 4. JSON解析: 在接收到服务器...

    60个android经典入门程序源代码

    - **HTTP请求**:通过HttpURLConnection或第三方库如OkHttp进行GET和POST请求。 - **JSON解析**:使用Gson或Jackson库解析JSON数据。 - **异步处理**:理解AsyncTask,避免UI线程阻塞。 4. **蓝牙通讯**: - **...

    Android从入门到精通--书中全部源代码(带注释)

    书中会介绍如何实现GET和POST请求,以及如何处理JSON数据。 6. **多媒体支持**:Android支持音频、视频和图像处理。源代码可能包含使用MediaPlayer播放音频,Camera API捕获图片,以及使用Glide或Picasso加载网络...

    老罗Android视频第一版相关PPT和源代码

    - **使用示例**:如何定义服务接口,以及如何发送GET、POST等不同类型的请求。 ### 高级特性 1. **Service服务**: - **后台运行**:了解如何利用Service在后台执行长时间运行的任务。 - **绑定服务**:通过...

    android从入门到精通

    1. **HTTP请求**:使用HttpURLConnection或OkHttp发送GET、POST请求。 2. **JSON解析**:学习使用Gson或Jackson库解析JSON数据。 3. **异步处理**:理解AsyncTask、Handler和Thread池,处理网络操作的异步需求。 ...

    android52期 Android46期(已破解)android35 期

    - HTTP请求:学习使用HttpURLConnection、OkHttp等库发送GET、POST请求。 - JSON解析:掌握JSON数据格式的解析方法,能够将JSON数据转换为Java对象。 6. **多媒体应用**: - 摄像头操作:学习如何调用摄像头拍摄...

    Xamarin android调用web api入门示例

    - 创建一个 `HttpRequestMessage` 对象,指定 HTTP 方法(GET、POST等)、URL 和可选的请求内容。 4. **发送请求并处理响应** - 使用 `HttpClient` 的 `SendAsync` 方法发送请求。 - `SendAsync` 返回一个 `Task...

    《老罗Android开发视频教程》入门_布局_ui控件_web_http_jdbc等源码

    源码会展示如何发送GET和POST请求,处理返回的JSON或XML数据,以及处理异步任务避免阻塞UI线程。 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口,尽管在Android中更常见的是使用SQLite数据库...

    android开发入门与实战源代码

    源代码可能涵盖了从发送GET/POST请求到解析JSON数据的完整流程。 最后,Android的异步处理机制,如AsyncTask、IntentService、Handler/Looper,用于解决耗时操作导致的主线程阻塞问题。源代码中可能会有这些异步...

    Pro.Android.3.pdf

    1. **HTTP请求**:学会发起GET和POST请求,从服务器获取数据或向服务器发送数据,通常用于与Web服务进行交互。 2. **JSON解析**:掌握如何解析服务器返回的JSON格式数据,提取有用信息并在应用中展示。 3. **异步...

    《android 4.X 入门到精通》配套代码

    HttpURLConnection是原生的网络请求方式,适用于简单的GET或POST请求;AsyncTask则用于在后台线程执行网络任务,避免阻塞主线程。Volley和Retrofit是更高级的网络库,提供更便捷的API,支持异步请求、数据缓存等功能...

    android 4.x手机平板电脑程序设计入门-孙宏明讲座

    10. **网络编程**:介绍HTTP通信,使用HttpURLConnection和OkHttp库发送GET/POST请求,以及JSON数据的解析。 11. **权限管理**:讲解Android的权限模型,如何在Manifest中声明和在代码中处理权限请求。 12. **动画...

    android经典范例大全

    - HTTP请求处理:使用HttpURLConnection、OkHttp等库发送GET/POST请求。 - JSON数据解析:利用Gson、Jackson等库解析JSON数据。 - WebSocket通信:实现实时双向通信功能。 2. **多媒体开发**: - 音频视频播放...

Global site tag (gtag.js) - Google Analytics