首页 > 解决方案 > 客户端发送的请求在语法上不正确。在命令行中通过 curl 发布数据时出现错误

问题描述

当我尝试在命令行中通过 curl 发布我的数据时,它会显示以下错误。我与邮递员一起尝试,数据发布成功。提前致谢

我的控制器

@Controller
@RequestMapping(value = "registration")
public class RegistrationController {

    public RegistrationController(){

    }

    @Autowired
    private RegistrationService registrationService;

    @PostMapping("/create")
   // @RequestMapping(value = "/create", method = RequestMethod.POST, consumes="application/json")
    public @Async ResponseEntity<String> create(@RequestBody Registration registration) {
        try {
            // registrationService.create(registration);
            if (registration == null) {
                return new ResponseEntity("Registration failed.", HttpStatus.BAD_REQUEST);
            } else {
                registrationService.create(registration);
                return new ResponseEntity(HttpStatus.CREATED);
            }

        } catch (Exception e) {
            return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST);

        }
    }

    @PutMapping("/update")
    public ResponseEntity<String> update(@RequestBody Registration registration) {
        try {
            // registrationService.create(registration);
            if (registration == null) {
                return new ResponseEntity("Registration update failed.", HttpStatus.BAD_REQUEST);
            } else {
                registrationService.update(registration);
                return new ResponseEntity(HttpStatus.CREATED);
            }

        } catch (Exception e) {
            return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST);

        }
    }

    @GetMapping("/getById/{id}")
    public ResponseEntity<Registration> GetById(@PathVariable int id) {
        try {
            // registrationService.create(registration);
            if (id == 0) {
                return new ResponseEntity("Failed to retrive value.", HttpStatus.BAD_REQUEST);
            } else {
                Registration res = registrationService.getById(id);
                return new ResponseEntity(res, HttpStatus.OK);
            }

        } catch (Exception e) {
            return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST);

        }
    }

    @DeleteMapping("/delete/{id}")
    public ResponseEntity<String> delete(@PathVariable int id) {
        try {
            // registrationService.create(registration);
            if (id == 0) {
                return new ResponseEntity("Failed to delete.", HttpStatus.BAD_REQUEST);
            } else {
                boolean res = registrationService.delete(id);
                if (res) {
                    return new ResponseEntity(HttpStatus.OK);
                }else{
                    return new ResponseEntity("failed to delete.", HttpStatus.BAD_REQUEST);
                }
            }

        } catch (Exception e) {
            return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST);

        }
    }

    @GetMapping("/getAll")
    public ResponseEntity<List<Registration>> getAll() {
        try {
            // registrationService.create(registration);

            List<Registration> res = registrationService.getAll();
            return new ResponseEntity(res, HttpStatus.OK);
        } catch (Exception e) {
            return new ResponseEntity(e.getMessage(), HttpStatus.BAD_REQUEST);

        }
    }

}

当我尝试在命令行中通过 curl 发布我的数据时,它向我显示以下错误:

C:\>curl -v POST -H "Content-Type: application/json" -d 
'{
"firstName":"David",
"lastName":"Smith",
"email":"david@gmail.com",
"address":"kathmandu",
"phone":"9876544434",
"username":"david",
"password":"davidm@123"
}' 

http://localhost:8080/LMS/registration/create

输入上述命令后的消息:

* Rebuilt URL to: POST/

* Could not resolve host: POST

* Closing connection 0

curl: (6) Could not resolve host: POST
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#1)

> POST /LMS/registration/create HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.55.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 122
>
* upload completely sent off: 122 out of 122 bytes

< HTTP/1.1 400 Bad Request

< Server: GlassFish Server Open Source Edition  4.1.1

< X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition  4.1.1  Java/Oracle Corporation/1.8)

< Access-Control-Allow-Origin: *

< Access-Control-Allow-Credentials: true

< Access-Control-Allow-Methods: ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL

< Access-Control-Max-Age: 3600

< Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Key, Authorization

< Content-Language:

< Content-Type: text/html

< Date: Mon, 27 Aug 2018 16:31:04 GMT

< Connection: close

< Content-Length: 1109`
<
> 
>        ` <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
>         <html xmlns="http://www.w3.org/1999/xhtml">
>         <head>
>         <title>GlassFish Server Open Source Edition  4.1.1  - Error report</title>
>         <style type="text/css">
>     <!--
>     H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
> 
>     H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
> 
>     H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
> 
>     BODY 
>     {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
> 
>     B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} 
>     P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}
>     A {color : black;}
>     HR {color : #525D76;}--></style> 
>     </head>
>     <body>
>     <h1>HTTP Status 400 - Bad Request</h1>
>     <hr/>
>     <p>
>     <b>type</b> 
>     Status report
>     </p>
>     <p>
>     <b>message</b>
>     Bad Request</p>
>     <p><b>description</b>
>     The request sent by the client was syntactically incorrect.</p>
>     <hr/>
>     <h3>GlassFish Server Open Source Edition  4.1.1 </h3>
>     </body>
>     </html>* 
>     Closing connection 1

这是我的注册对象

@Entity
@Table(name = "registration")
@NamedQueries({
    @NamedQuery(name = "Registration.findAll", query = "SELECT r FROM Registration r")})
public class Registration implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "first_name")
    private String firstName;
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "last_name")
    private String lastName;
    // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "email")
    private String email;
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "address")
    private String address;
    // @Pattern(regexp="^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$", message="Invalid phone/fax format, should be as xxx-xxx-xxxx")//if the field contains phone or fax number consider using this annotation to enforce field validation
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "phone")
    private String phone;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "username")
    private String username;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "password")
    private String password;

    public Registration() {
    }

    public Registration(Integer id) {
        this.id = id;
    }

    public Registration(Integer id, String firstName, String lastName, String email, String address, String phone, String username, String password) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.address = address;
        this.phone = phone;
        this.username = username;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Registration)) {
            return false;
        }
        Registration other = (Registration) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.gaurav.lms.entity.Registration[ id=" + id + " ]";
    }

}

标签: javaspring-mvccurl

解决方案


推荐阅读