我正在尝试通过 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,我不知道为什么。有谁知道我做错了什么,或者我可以用另一种方法来解决这个问题?
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
根据这个 QA: HttpClientBuilder - java.lang.NoSuchFieldError: INSTANCE你得到了Apache HTTP Client 的不兼容版本httpcore和httpclient依赖项的混合。
建议:调查瞬态依赖项并尝试通过从依赖项列表中删除导致该问题的库来解决冲突,或者在您的项目中明确定义这两个库pom.xml,例如:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.10</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
注意:我为httpclient库选择了最新的兼容版本。这可能会在未来发生变化,或者可能与您当前使用的版本不匹配。httpclient
慕婉清6462132
TA贡献1804条经验 获得超2个赞
CloseableHttpClient httpclient = HttpClients.createDefault();
这对我有用,您不必使用连接管理器打开和关闭连接
添加回答
举报
0/150
提交
取消