专栏首页刘晓杰通过POST方式传递数据给服务器

通过POST方式传递数据给服务器

1.新建动态web工程(ServerPOST)

2.新建servlet。设置如下:

3.ServerPOST.java

package com.example.servletPOST;

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;

/**
 * Servlet implementation class ServerPOST
 */
@WebServlet("/ServerPOST")
public class ServerPOST extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServerPOST() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
//      String name = request.getParameter("name");
//      String age = request.getParameter("age");
//      System.out.println("POST : " + name + "   " + age);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
            //这次是POST请求
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println("POST : " + name + "   " + age);
    }
}

4.测试效果

5.建立客户端程序(UserInformationPOST) 布局文件,MainActivity.java和上一篇(http://blog.csdn.net/lxj1137800599/article/details/51077569)完全一样 UploadUserInfoService.java

package com.example.userinformationpost;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class UploadUserInfoService {
    public static boolean save(String name, String age) throws Exception {
        String path = "http://10.107.56.64:8080/ServerPOST/ServerPOST";
        Map<String, String> params = new HashMap<String, String>();
        params.put("name", name);
        params.put("age", age);
        return sendPOSTRequest(path, params, "UTF-8");
    }

    private static boolean sendPOSTRequest(String path,
            Map<String, String> params, String encoding) throws Exception {

        StringBuilder sb = new StringBuilder(path);
        if (params != null && !params.isEmpty()) {
            sb.append("?");
            for (Entry<String, String> entry : params.entrySet()) {
                sb.append(entry.getKey()).append("=");
                sb.append(URLEncoder.encode(entry.getValue(), encoding))
                        .append("&");
            }
            sb.deleteCharAt(sb.length() - 1);
        }
        byte[] data = sb.toString().getBytes();
        // 上面的sb用来构造url
        HttpURLConnection connection = (HttpURLConnection) new URL(
                sb.toString()).openConnection();
        connection.setConnectTimeout(5000);

        //***************
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);//如果设置POST,必须设置可以对外输出数据
        connection.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        connection.setRequestProperty("Content-Length", data.length+"");
        OutputStream outputStream = connection.getOutputStream();
        outputStream.write(data);
        outputStream.flush();
        //*************
        //GET和POST就这里不一样

        if (connection.getResponseCode() == 200) {
            return true;
        }
        return false;
    }
}

6.测试结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • android socket实现文件导出功能

    该功能主要描述如下:将SD卡中的文件通过socket导出到window文件夹中。 首先我要先介绍一个客户端和服务器端共有的一个文件类: UploadFi...

    提莫队长
  • UNPv1第八章:基本UDP套接口编程

    使用UDP编写的一些常用应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)

    提莫队长
  • 动态代理

    在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这一个...

    提莫队长
  • 手写一个基于NIO的迷你版Tomcat

    在很久之前看到了一篇文章写一个迷你版的Tomcat,觉得还是很有意思的,于是也跟着手敲了一遍,果不其然得出了想要的hello world,但是他这个是基于B...

    beifengtz
  • Spring Security 案例实现和执行流程剖析

    Spring Security 是 Spring 社区的一个顶级项目,也是 Spring Boot 官方推荐使用的安全框架。除了常规的认证(Authentica...

    朝雨忆轻尘
  • [android] notification入门

    通知栏,对话框,Toast是我们接触的三个提示框,通知栏是在系统的应用com.adnroid.systemui当中的

    陶士涵
  • JavaScript引用类型之Object类型

    在JavaScript中大多数的引用类型都是Object的实例,Object类型也是使用最多的类型! 创建Object类型实例的方式有两种,下面分别来分析一下:...

    郑小超.
  • JS示例17-如何取非行间样式

    专注APP开发
  • Django 惰性机制

    惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是...

    py3study
  • 定时和定量压测模式实现--视频讲解

    上期将了多线程基类和执行类,本期分享一下两种压测模式。一种是定量,即单线程循环次数固定;另一种是定时,即单线程执行时间固定。两种方式各有优劣,实际工作中个人偏向...

    FunTester

扫码关注云+社区

领取腾讯云代金券