小编And*_*ann的帖子

如何在 Ktor 中接收 JSON 对象?

我定义了数据类,配置了 gson 并创建了路由来处理发布请求,如下所示:

data class PurchaseOrder(val buyer: String, val seller: String, 
val poNumber: String, val date: String,
                     val vendorReference: String)

 install(ContentNegotiation) {
    gson {
        setDateFormat(DateFormat.LONG)
        setPrettyPrinting()
    }


    post("/purchaseOrder"){
        val po = call.receive<PurchaseOrder>()
        println("purchase order: ${po.toString()}")
        call.respondText("post received", contentType = 
        ContentType.Text.Plain)
Run Code Online (Sandbox Code Playgroud)

以下 JSON 在 POST 请求中发送

{
"PurchaseOrder" : {
"buyer": "buyer a",
"seller": "seller A",
"poNumber": "PO1234",
"date": "27-Jun-2018",
"vendorReference": "Ref1234"
}
}
Run Code Online (Sandbox Code Playgroud)

输出显示所有空值。

purchase order: PurchaseOrder(buyer=null, seller=null, poNumber=null, 
date=null, vendorReference=null)
Run Code Online (Sandbox Code Playgroud)

从 call.request.receiveChannel() 读取数据确实显示了正确的 JSON。所以我正在接收数据,但 call.receive() 似乎没有产生预期的结果。

手动获取 JSON 并尝试按如下方式创建 …

gson kotlin ktor

7
推荐指数
1
解决办法
6801
查看次数

创建 elasticsearch 客户端抛出一个 netty IllegalStateException

弹性搜索版本 5.4.3

我使用单例来创建一个客户端,这里是主要代码

TransportClient tclient = null;
    if (clusterName != null) {
            Settings settings = Settings.builder()
                    .put("cluster.name",clusterName)
                    .put("client.transport.sniff", true)
                    .build();
            tclient = new PreBuiltTransportClient(settings);//here will throw the exception
    } else {
        tclient = new  PreBuiltTransportClient(Settings.EMPTY);
    }
Run Code Online (Sandbox Code Playgroud)

第一次运行到代码“tclient = new PreBuiltTransportClient(settings);”时,抛出异常

IllegalStateException:availableProcessors 已设置为 [4]

但是第二次调用它会成功,并且客户端将被终止,有人知道如何解决它吗?

java netty elasticsearch

4
推荐指数
1
解决办法
2793
查看次数

使用IntelliJ中的Elasticsearch测试框架,如何解决idea_rt.jar的jar地狱?

我正在尝试使用提供的 Elasticsearch java 测试框架对我的 es 项目进行一些集成测试。我在 IntelliJ 中有一个非常简单的测试设置:

class FormTest : ESIntegTestCase() {

    override fun nodeSettings(nodeOrdinal: Int): Settings = Settings.builder()
        .put(super.nodeSettings(nodeOrdinal))
        //.put("node.mode", "network")
        .build()

    @org.junit.Test fun start() {
        ensureGreen()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,出现以下异常:

java.lang.RuntimeException: found jar hell in test classpath

    at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:92)
    at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:190)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:592)
Caused by: java.lang.IllegalStateException: jar hell!
duplicate jar [C:\Users\user\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\181.5281.24\lib\idea_rt.jar] on classpath: ...
    at org.elasticsearch.bootstrap.JarHell.parseClassPath(JarHell.java:142)
    at org.elasticsearch.bootstrap.JarHell.parseClassPath(JarHell.java:98)
    at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:89)
    at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:90)
    ... 4 more
Run Code Online (Sandbox Code Playgroud)

我找到了一些绕过 jar 地狱检查的方法,但如何解决问题?

intellij-idea elasticsearch kotlin

3
推荐指数
1
解决办法
889
查看次数

ReactQuery - 如何处理错误数据

我们使用一个糟糕的 API,其中 404 响应意味着一个空数组。

有没有办法告诉 React Query 将 404 错误转换为空数组?

我希望有办法做这样的事情吗?

const {data, isLoading, isError} = useQuery('key', apiCall, {
    onError: (error) => {
      if(error.statusCode === 404) {
        setData([]);
        setIsError(false);
      }
    }
});
Run Code Online (Sandbox Code Playgroud)

react-query

3
推荐指数
1
解决办法
4894
查看次数

标签 统计

elasticsearch ×2

kotlin ×2

gson ×1

intellij-idea ×1

java ×1

ktor ×1

netty ×1

react-query ×1