以下是正在激发的包装器API代码:-
logger.info("Inside Method");
String integrationUrl=null;
String integrationUsername = null;
String integrationPassword = null;
if(StringUtils.isNotBlank(System.getenv("PushGDSDataUrl")))
integrationUrl = System.getenv("PushGDSDataUrl");
else
integrationUrl = "https://test.connect.boomi.com/ws/simple/createCommentsx-test";
if(StringUtils.isNotBlank(System.getenv("PushGDSDataUrlUsername")))
integrationUsername = System.getenv("PushGDSDataUrlUsername");
else
integrationUsername = "<integration-username>";
if(StringUtils.isNotBlank(System.getenv("PushGDSDataUrlPwd")))
integrationPassword = System.getenv("PushGDSDataUrlPwd");
else
integrationPassword = "<integration-password>";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// headers.set("dcuid", integrationUsername);
//headers.set("dcpwd", integrationPassword);
// headers.set("Content-Type", "application/json");
String auth = integrationUsername + ":" + integrationPassword;
byte[] encodedAuth = Base64.encodeBase64(
auth.getBytes(Charset.forName("US-ASCII")) );
String authHeader = "Basic " + new String( encodedAuth );
headers.set( "Authorization", authHeader );
// headers.set("Body","{rn"class_name":"Server",rn"company_name:"ABC"rn}rn");
GDSPushData newObj = new GDSPushData();
newObj.setClass_name(className);
newObj.setCompany_name(companyName);
String jsonInString = new Gson().toJson(newObj);
JSONObject mJSONObject = new JSONObject(jsonInString);
logger.info("Request is set");
HttpEntity<String> entityReq = new HttpEntity<String>(mJSONObject.toString(),headers);
logger.info("Request is converted");
URI targetUrl = UriComponentsBuilder.fromUriString(integrationUrl).build().encode().toUri(); //Build base url
logger.info("target Url"+targetUrl);
ResponseEntity<String> result = restTemplate.exchange(integrationUrl, HttpMethod.POST, entityReq, String.class);
//String result = restTemplate.getForObject(targetUrl, String.class);
logger.info(result.getStatusCodeValue());
logger.info(result.getBody());
当我们在指定相同的凭据后使用poster触发上面代码中提到的intergate-url时,它工作正常,我们得到200 OK响应代码,当从Spring Java应用程序触发相同的代码时,我们得到401未经授权的错误。
请尝试使用以下代码
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("<Your_URL>");
List<NameValuePair> arguments = new ArrayList<>();
arguments.add(new BasicNameValuePair("class_name", className));
arguments.add(new BasicNameValuePair("company_name", companyName));
try{
String auth = integrationUsername + ":" + integrationPassword;
byte[] encodedAuth = Base64.encodeBase64(
auth.getBytes(Charset.forName("US-ASCII")) );
String authHeader = "Basic " + new String( encodedAuth );
post.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
post.setHeader(HttpHeaders.ACCEPT, "application/json");
post.setHeader(HttpHeaders.AUTHORIZATION,authHeader);
post.setEntity(new UrlEncodedFormEntity(arguments));
HttpResponse response = client.execute(post);