Curl请求@RequestBody List

13 篇文章 0 订阅
5 篇文章 0 订阅
  1. @RequestBody标注在List作为参数,请求方式
    curl -H “Content-type: application/json” -XPOST -d ‘[{“name”:“ThreeBody”, “id”:1}]’ “http://localhost:9111/test/path”
	@RequestMapping(value = "/test/path", method = RequestMethod.POST)
    public String insertBooks(@RequestBody List<Book> bookList) {
        return "";
    }

class Book {
    private long id;
    private String name;

    /** com.fasterxml.jackson反序列化时需要一个无参构造方法 */
    public Book() {
    }

    public long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

注意这里Book需要一个无参的构造函数,否则会出现类似如下的异常 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of Book (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用C语言编写的基本的POST请求示例,不使用curl库: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netdb.h> #define BUFFER_SIZE 1024 void error(const char *msg) { perror(msg); exit(1); } int create_tcp_socket() { int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { error("Error creating socket"); } return sock; } char *get_ip(const char *host) { struct hostent *hent; int iplen = 15; //XXX.XXX.XXX.XXX char *ip = (char *) malloc(iplen + 1); memset(ip, 0, iplen + 1); if ((hent = gethostbyname(host)) == NULL) { error("Error getting IP"); } if (inet_ntop(AF_INET, (void *) hent->h_addr_list[0], ip, iplen) == NULL) { error("Error converting hostname to IP address"); } return ip; } char *build_post_request(const char *host, const char *path, const char *content_type, const char *body) { char *request_format = "POST %s HTTP/1.1\r\n" "Host: %s\r\n" "Content-Type: %s\r\n" "Content-Length: %ld\r\n" "Connection: close\r\n" "\r\n" "%s"; int request_length = snprintf(NULL, 0, request_format, path, host, content_type, strlen(body), body); char *request = (char *) malloc(request_length + 1); sprintf(request, request_format, path, host, content_type, strlen(body), body); return request; } void send_post_request(const char *host, const char *port, const char *path, const char *content_type, const char *body) { int sock = create_tcp_socket(); char *ip = get_ip(host); struct sockaddr_in server_address; server_address.sin_family = AF_INET; server_address.sin_port = htons(atoi(port)); if (inet_pton(AF_INET, ip, &(server_address.sin_addr)) <= 0) { error("Error converting IP address"); } if (connect(sock, (struct sockaddr *) &server_address, sizeof(server_address)) == -1) { error("Error connecting to server"); } char *request = build_post_request(host, path, content_type, body); if (send(sock, request, strlen(request), 0) == -1) { error("Error sending request"); } char response[BUFFER_SIZE]; memset(response, 0, sizeof(response)); while (1) { int bytes_received = recv(sock, response, BUFFER_SIZE - 1, 0); if (bytes_received <= 0) { break; } printf("%s", response); memset(response, 0, sizeof(response)); } free(request); free(ip); close(sock); } int main() { const char *host = "example.com"; const char *port = "80"; const char *path = "/your/api/endpoint"; const char *content_type = "application/json"; const char *body = "{\"key\":\"value\"}"; send_post_request(host, port, path, content_type, body); return 0; } ``` 请将`example.com`替换为目标主机的域名或IP地址,`/your/api/endpoint`替换为实际的API端点,`{\"key\":\"value\"}`替换为您要发送的请求体内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值