gpt4 book ai didi

Spring WebClient Post 方法体

转载 作者:行者123 更新时间:2023-12-04 14:14:10 43 4
gpt4 key购买 nike

我正在尝试发送带有正文数据的 POST 请求,如下所述:https://scrapyrt.readthedocs.io/en/stable/api.html#post .

这是我尝试做的,但它给了我 HTTP 代码 500

String uri = "http://localhost:3000";

WebClient webClient = WebClient.builder()
.baseUrl(uri)
.build();
LinkedMultiValueMap map = new LinkedMultiValueMap();

String q = "\"url\": \"https://blog.trendmicro.com/trendlabs-security-intelligence\",\"meta\":{\"latestDate\" : \"18-05-2020\"}}";
map.add("request", q);
map.add("spider_name", "blog");

BodyInserter<MultiValueMap<String, Object>, ClientHttpRequest> inserter2
= BodyInserters.fromMultipartData(map);

Mono<ItemsList> result = webClient.post()
.uri(uriBuilder -> uriBuilder
.path("/crawl.json")
.build())
.body(inserter2)
.retrieve()
.bodyToMono(ItemsList.class);

ItemsList tempItems = result.block();

最佳答案

Here's what i've tried to do but it gives me HTTP code 500



很可能是因为您以错误的格式和错误的类型混合发送了错误的数据:
  • 您使用的是多部分表单数据,而不是 JSON
  • 然后您将设置 request参数作为 JSON 字符串 ( q )
  • 您在 q 中使用的 JSON 字符串甚至无效(它至少缺少一个左花括号) - 手写 JSON 几乎普遍是一个坏主意,而是利用一个框架来为你做这件事。

  • 相反,正常的做法是创建一个映射到您的请求的 POJO 结构,因此:
    public class CrawlRequest {

    private CrawlInnerRequest request;
    @JsonProperty("spider_name")
    private String spiderName;

    //....add the getters / setters
    }

    public class CrawlInnerRequest {

    private String url;
    private String callback;
    @JsonProperty("dont_filter")
    private String dontFilter;

    //....add the getters / setters
    }

    ...然后只需创建一个 CrawlRequest ,根据需要设置值,然后在您的通话后使用:
    .body(BodyInserters.fromValue(crawlRequest))

    这是使用 WebClient 的一个相当基本的基本部分。 .我建议更广泛地阅读,让自己更好地了解基本面,从长远来看,这将有很大帮助。

    关于Spring WebClient Post 方法体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62073018/

    43 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com