springboot实际操作-POST调试(2)

之前遇到一个问题,如果是get方法,

我可以很简单的构造强制链接结构
/function/{userId}

或是参数结构
/function?userId=123

@RequestMapping("/function")
@ResponseBody
public String function(@RequestParam("userId") String userId){
  return "result";
}

然后就可以
get方法调试很简单,在网页中请求就完成了,如果是POST怎么办?

本文将介绍一个使用java代码发送POST请求的方式:

class A{
  String a;
  String b;
  //省略getter,setter
    ...
}
@RequestMapping(value = "/functionPost", method = RequestMethod.POST)
    @ResponseBody
    public String functionPost(@RequestBody A a) {
        return "result";
    }

@ResponseBody

@Test
    public void jsonPost() {
        String strURL = "http://localhost:8080/newBsCard";
        try {
            URL url = new URL(strURL);// 创建连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            connection.setRequestMethod("POST"); // 设置请求方式
            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
            connection.setRequestProperty("Content-Type", "application/json;charset=utf-8"); // 设置发送数据的格式
            connection.connect();
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码
            A bean = new A();
           
            bean.setA("23");
            bean.setB("23");
            String a = JSONObject.toJSONString(bean);
            out.append(a);
            out.flush();
            out.close();

            int code = connection.getResponseCode();
            InputStream is = null;
            if (code == 200) {
                is = connection.getInputStream();
            } else {
                is = connection.getErrorStream();
            }

            // 读取响应
            int length = (int) connection.getContentLength();// 获取长度
            if (length != -1) {
                byte[] data = new byte[length];
                byte[] temp = new byte[512];
                int readLen = 0;
                int destPos = 0;
                while ((readLen = is.read(temp)) > 0) {
                    System.arraycopy(temp, 0, data, destPos, readLen);
                    destPos += readLen;
                }
                String result = new String(data, "UTF-8"); // utf-8编码
                System.out.println(result);
                //return result;
            }
        } catch (IOException e) {
            //LOG.error("Exception occur when send http post request!", e);
        }
    }

上面的代码,改自:
https://blog.csdn.net/java173842219/article/details/54020168

参考
https://blog.csdn.net/ff906317011/article/details/78552426
该文章简单介绍了@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

参考
https://www.cnblogs.com/dflmg/p/6364141.html
该文章,使用ajax请求。不过里面说明了请求的时候,发送到服务端的内容被解析的方式。
https://www.cnblogs.com/qiankun-site/p/5774300.html

参考
https://blog.csdn.net/ljxbbss/article/details/74452326
该文章用实例说明了400错误的情况,以及用postman进行测试的方式

400错误:表示数据的参数类型错误
https://www.cnblogs.com/beppezhang/p/5824986.html

415错误:表示格式错误,比如content-type 参数搞错了。
https://blog.csdn.net/majinggogogo/article/details/78383772

500系统错误。https://blog.csdn.net/xiejunna/article/details/70049094

POSTMan的使用
https://blog.csdn.net/afterlife_qiye/article/details/62218572

参考
这个文章,对接受的参数类型聊得更深刻。
https://blog.csdn.net/m0_37499059/article/details/78798077

参考
使用mock测试的方式,没有实践过,记下
https://www.cnblogs.com/knyel/p/7901034.html

文章中给了三种传入方式
https://blog.csdn.net/lx_yoyo/article/details/72871091

springboot的测试方式
http://somefuture.iteye.com/blog/2247207

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,085评论 25 707
  • 看着脸上的分布不均的斑点,让我想起不太明朗的夜晚天上零落散着的星星。我爱有星空的夜幕,是不是也要爱脸上这些伪星星?...
    昌利呦阅读 78评论 0 0
  • Stay Hungry, Stay Foolish 1. 学到的概念Loss Sometimes, loss an...
    头盖骨cranium阅读 189评论 2 0
  • 1 《红楼梦》里有个场景,贾雨村刚上任就遇到一桩命案,有钱有势的薛少爷,和冯公子抢一个丫鬟,把冯公子给打死了。贾雨...
    欣钥说阅读 411评论 4 4
  • 我最近在想象着一种生活 当然,既然是想象 它的所有支持性条件便是我所可以支配的 六点钟苏醒 这已成了我固有的生物钟...
    牵执阅读 202评论 2 4