使用基本身份验证和请求正文在 Java 中发送 HTTP POST 请求

我正在尝试通过 Java 向 ServiceNow REST API 发送 HTTP 请求并创建一个事件。


我在 Postman 中使用: URL: POST https://<domain>.service-now.com/api/now/table/em_event


身体:


{

    "source":"Postman",

    "node":"Codys Mac",

    "type":"Test",

    "resource":"Test",

    "metric_name":"Testing",

    "event_class":"Test",

    "severity":"4",

    "description":"This is a test event, created from REST API.",

}

它有效,没有问题。


但是在 Java 中,我只有问题。


我发现我试图遵循的最简单的例子是:https : //kodejava.org/how-do-i-send-an-http-post-request/


我的代码:


    public void post(){

        HttpClient client = HttpClientBuilder.create().build();

        HttpPost post = new HttpPost(serviceNowURL);


        List<NameValuePair> arguments = new ArrayList<>();

        arguments.add(new BasicNameValuePair("source", "Sample Producer"));

        arguments.add(new BasicNameValuePair("node", "Codys Mac"));

        arguments.add(new BasicNameValuePair("type", "Test Event Type"));

        arguments.add(new BasicNameValuePair("resource", "Test Event Resource"));

        arguments.add(new BasicNameValuePair("metric_name", "Test Event Metric Name"));

        arguments.add(new BasicNameValuePair("event_class", "Test Event Class"));

        arguments.add(new BasicNameValuePair("sevrity", "5"));

        arguments.add(new BasicNameValuePair("description", "This is a test event, created by SampleProducer App usign REST API."));

        }

    }

但每当我运行此,我遇到的第一线异常HttpClientBuilder.create().build()的java.lang.NoSuchFieldError: INSTANCE,我不知道为什么。


有谁知道我做错了什么,或者我可以用另一种方法来解决这个问题?


蛊毒传说
浏览 195回答 2
2回答

慕田峪9158850

根据这个 QA: HttpClientBuilder - java.lang.NoSuchFieldError: INSTANCE你得到了Apache HTTP Client 的不兼容版本httpcore和httpclient依赖项的混合。建议:调查瞬态依赖项并尝试通过从依赖项列表中删除导致该问题的库来解决冲突,或者在您的项目中明确定义这两个库pom.xml,例如:<dependency>&nbsp; &nbsp; <groupId>org.apache.httpcomponents</groupId>&nbsp; &nbsp; <artifactId>httpcore</artifactId>&nbsp; &nbsp; <version>4.4.10</version></dependency><dependency>&nbsp; &nbsp; <groupId>org.apache.httpcomponents</groupId>&nbsp; &nbsp; <artifactId>httpclient</artifactId>&nbsp; &nbsp; <version>4.5.6</version></dependency>注意:我为httpclient库选择了最新的兼容版本。这可能会在未来发生变化,或者可能与您当前使用的版本不匹配。httpclient

慕婉清6462132

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseableHttpClient&nbsp;httpclient&nbsp;=&nbsp;HttpClients.createDefault();这对我有用,您不必使用连接管理器打开和关闭连接
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java