Apache Jmeter:发布一个不与ModelAttribute一起使用的对象

时间:2017-06-29 09:20:20

标签: java json spring spring-mvc jmeter

我正在研究用Spring-MVC编写的web应用程序的压力测试。

我想将一个对象Person发送给应用程序。我已经添加了一个系统来获取电子邮件,但每当我发送对象时,它都是null。我究竟做错了什么?

服务器代码:

@RequestMapping(value = "/person/add", method = RequestMethod.POST)
    public String addPerson(@ModelAttribute("person") Person person, BindingResult bindingResult) {
        try {
            ObjectMapper mapper = new ObjectMapper();

            String json = mapper.writeValueAsString(person);
            System.out.println("String is "+json);
        }catch (Exception e){
            e.printStackTrace();
        }


        System.out.println("Person add called"+person.getUsername());
        person.setUsername(this.stripHTML(person.getUsername()));
        int personId = this.personService.addPerson(person);
        if (!(personId == 0)) {
            Person person1 = this.personService.getPersonById(personId);
            Collection<GrantedAuthority> authorities = new ArrayList<>();
            authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
            Authentication authentication = new UsernamePasswordAuthenticationToken(person1, null, authorities);
            SecurityContextHolder.getContext().setAuthentication(authentication);
            return "redirect:/canvaslisting";
        } else {
            return "redirect:/";
        }
    }

在正文数据中发送的对象:

{"person":{"id":0,"username":"testemail@gmail.com","firstName":"test","cleanCacheFlag":false,"googleDrive":false,"dropbox":false,"evernoteConsumed":false,"statusChangeTimeStamp":null,"useCalendar":false,"newsletterFlag":false,"tourSteps":null,"profession":null,"notiz":null,"telePhone":null,"lastVisitedBoards":null,"leftGroup":null,"optionalEmail":null,"facebookLink":null,"xingLink":null,"linkedinLink":null,"lastOnlineTimestamp":null,"userRole":null,"homePage":null,"excelImportQuota":0,"toEmail":null,"code":null,"authorities":null,"role":null,"newpassword":null,"token":null,"profilePhotoString":null,"accountNonExpired":true,"credentialsNonExpired":true,"accountNonLocked":true,"active":true,"enabled":false}
}

输出:

Person add callednull

屏幕截图:enter image description here

示例结果

Thread Name: Thread Group 2-5
Sample Start: 2017-06-29 15:17:11 IST
Load time: 6
Connect Time: 0
Latency: 6
Size in bytes: 237
Sent bytes:0
Headers size in bytes: 205
Body size in bytes: 32
Sample Count: 1
Error Count: 1
Data type ("text"|"bin"|""): text
Response code: 415
Response message: Unsupported Media Type

Response headers:
HTTP/1.1 415 Unsupported Media Type
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1048
Date: Thu, 29 Jun 2017 09:47:11 GMT
Connection: close


HTTPSampleResult fields:
ContentType: text/html;charset=utf-8
DataEncoding: utf-8

请求:

POST http://127.0.0.1:8080/person/add/

POST data:
{"person":{"id":0,"username":"testemail@gmail.com","firstName":"test","cleanCacheFlag":false,"googleDrive":false,"dropbox":false,"evernoteConsumed":false,"statusChangeTimeStamp":null,"useCalendar":false,"newsletterFlag":false,"tourSteps":null,"profession":null,"notiz":null,"telePhone":null,"lastVisitedBoards":null,"leftGroup":null,"optionalEmail":null,"facebookLink":null,"xingLink":null,"linkedinLink":null,"lastOnlineTimestamp":null,"userRole":null,"homePage":null,"excelImportQuota":0,"toEmail":null,"code":null,"authorities":null,"role":null,"newpassword":null,"token":null,"profilePhotoString":null,"accountNonExpired":true,"credentialsNonExpired":true,"accountNonLocked":true,"active":true,"enabled":false}
}

[no cookies]

Request Headers:
Connection: close
Content-Length: 717
Content-Type: application/x-www-form-urlencoded

3 个答案:

答案 0 :(得分:1)

你不应该在人身上有一个@RequestBody注释吗?

public String addPerson(@RequestBody Person person);

答案 1 :(得分:1)

在HTTP标头管理器中更改标题内容类型:

Content-Type: application/x-www-form-urlencoded

要:

Content-Type: application/json

答案 2 :(得分:0)

嗯,JMeter请求中存在拼写错误或复制粘贴问题

JMeter request issue

您的JMeter配置可能会丢失,HTTP Header Manager已配置为发送Content-Type标头,其值为application/json