2017-06-29 71 views
1

我正在對使用Spring-MVC編寫的web應用程序進行壓力測試。爲此,我想發送一個對象Person到應用程序。我已經添加了一個系統來獲取電子郵件,但每當我發送該對象時,它都是空的。我究竟做錯了什麼?謝謝。Apache Jmeter:發佈一個不適用於ModelAttribute的對象

Server代碼:

@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":"[email protected]","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":"[email protected]","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 

回答

1

更改HTTP標題管理器中的標頭內容類型:

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

要:

Content-Type: application/json 
+0

你想在哪裏添加這個?在Jmeter中,在http頭管理器中? –

+0

這個工作的人..謝謝...在Jmeter中添加它.. –

1

你不應該只是對人的@RequestBody註解?

public String addPerson(@RequestBody Person person); 
+0

仍然沒有運氣。 HTTP/1.1 415不支持的媒體類型 –

0

嗯,在你的JMeter請求一個錯字或複製粘貼問題

JMeter request issue

而且你的JMeter的配置可能會丟失HTTP Header Manager配置爲發送Content-Type頭與application/json

+0

嘗試過的人,人,p。他們全部 –