为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2021-11-11 13:35:07
我正在尝试通过 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


查看完整回答
反对 回复 2021-11-11
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

      CloseableHttpClient httpclient = HttpClients.createDefault();

这对我有用,您不必使用连接管理器打开和关闭连接


查看完整回答
反对 回复 2021-11-11
  • 2 回答
  • 0 关注
  • 191 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信