REST 和 Apache HTTP:如何在 Java 中显示更多错误信息?

问题描述 投票:0回答:0

我得到了一个 Salesforce 集成项目。我使用 Apache HTTP 客户端和 Salesforce REST API 来创建对象。以下代码可以正常工作:

CloseableHttpClient httpclient = HttpClients.createDefault();

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("client_id", consumerKey));
params.add(new BasicNameValuePair("client_secret", consumerSecret));
params.add(new BasicNameValuePair("grant_type", "client_credentials"));

HttpPost post = new HttpPost("https://.....my.salesforce.com/services/oauth2/token");
post.setEntity(new UrlEncodedFormEntity(params));

HttpResponse loginResponse = httpclient.execute(post);

ObjectMapper mapper = new ObjectMapper();

JsonNode loginResult = mapper.readValue(loginResponse.getEntity().getContent(), JsonNode.class);
String accessToken = loginResult.get("access_token").asText();
String instanceUrl = loginResult.get("instance_url").asText();
            
String uri = instanceUrl + "/services/data/v57.0/sobjects/conference360__Event__c" ;

HttpPost httpPost = new HttpPost(uri);
httpPost.addHeader("Authorization", "Bearer " + accessToken);
httpPost.addHeader("Content-Type", "application/json");

JSONObject data = new JSONObject();

data.put("Name": "test meeting");
data.put("conference360__Event_Start_Date__c": "2023-02-27");
data.put("conference360__Event_End_Time__c": "12:13:00.000Z");
data.put("conference360__Event_End_Date__c": "2023-02-27");
data.put("conference360__Event_Start_Time__c": "12:12:00.000Z");
data.put("conference360__Time_Zone__c": "America/New_York");        

StringEntity body = new StringEntity(data.toString(1), ContentType.create("application/json"));
httpPost.setEntity(body);

CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(httpPost);  

然而,我总是得到同样的错误,我通过以下代码获得了更多错误信息:

System.out.println(response.getStatusLine().getStatusCode());
System.out.println(response.getStatusLine().getReasonPhrase());

这里是输出:

400
Bad Request

此信息几乎无用且具有误导性。我使用 POSTMAN 创建 (POST) 相同的对象,我收到显示失败真正原因的错误消息:

我们无法保存此记录,因为“从房间预订创建事件和案例”过程失败。将这些详细信息提供给您的 Salesforce 管理员。流程尝试创建记录时发生此错误:CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: conference360.Event_Trigger: execution of AfterInsert 由以下原因引起:System.QueryException:权限不足:安全查询包含不可访问的字段 (会议 360)。您可以在 SOAP API 开发人员指南中查找 ExceptionCode 值。错误 ID:2052924026-11322 (-1519010228)k SOAP API 开发人员指南中的 ExceptionCode 值。错误 ID:2052924026-11322 (-1519010228)","errorCode":"CANNOT_EXECUTE_FLOW_TRIGGER","fields":[]

我的问题是:如何在 Java 中显示相同的错误信息?

java rest salesforce apache-httpclient-4.x
© www.soinside.com 2019 - 2024. All rights reserved.