org.springframework.web.клиент.HttpClientErrorException$Несанкционированное исключение

#java #spring

Вопрос:

Когда я вызываю этот URL-адрес, используя RestTemplate для получения информации, я получаю следующую ошибку :

 try {  String authLogin = propertiesService.getValue("texnomart_auth_login");  String authPassword = propertiesService.getValue("texnomart_auth_password");  String authLoginAndPassword = "Basic "   base64Encoder.encodeToString(propertiesService.getValue(authLogin ":" authPassword).getBytes());  String apiKey = propertiesService.getValue("texnomart_api_key");  String url = propertiesService.getValue("texnomart_check_url");  String mobilePhone = "";  String bonusCardNumber = "";  Boolean contractType = false;   for (PaymentDto.ValueData data : paymentDto.getFieldValueList()) {  if (Objects.isNull(data.getFieldAlias())) continue;  if (data.getFieldAlias().equals("phone")) mobilePhone = data.getValue();  if (data.getFieldAlias().equals("bc_number")) bonusCardNumber = data.getValue();  }   if (StringUtils.isEmpty(mobilePhone) || StringUtils.isEmpty(bonusCardNumber)) {  return additionalSuppliersReturn;  }   DateTimeFormatter format = DateTimeFormatter.ofPattern("dd.MM.yyyy hh:mm:ss");   TexnoMartRequestDto texnoMartRequestDto = new TexnoMartRequestDto()  .setMobilePhone(mobilePhone)  .setBonusCardNumber(bonusCardNumber)  .setDate(format.format(LocalDateTime.now()));  

В следующем я попытался использовать базовую аутентификацию с типом кодирования, но этот метод также не помог :

 HttpHeaders headers = new HttpHeaders();  headers.setContentType(MediaType.APPLICATION_JSON);  headers.setBasicAuth(authLogin, authPassword);  headers.set("api-key", apiKey);   String externalId = generateToken();  ObjectMapper mapper = new ObjectMapper();  logService.logExternal(mapper.writeValueAsString(texnoMartRequestDto), LogType.REQUEST, externalId, url);  ResponseEntitylt;Stringgt; response = restTemplate.exchange(url, HttpMethod.GET, new HttpEntitylt;gt;(texnoMartRequestDto, headers), String.class);**//here i get an exception**  logService.logExternal(response.getBody(), LogType.RESPONSE, externalId, url);  

Но, нажимая на этот URL в postman,я получаю успешный ответ :

 "request": {  "auth": {  "type": "basic",  "basic": [  {  "key": "password",  "value": "123123",  "type": "string"  },  {  "key": "username",  "value": "Apelsinn",  "type": "string"  }  ]  },  "method": "GET",  "header": [  {  "key": "api-key",  "value": "4d8edae8-df0c4c5e-b4acfaac-bec608e4",  "type": "text"  }  ],  "body": {  "mode": "raw",  "raw": "{"phone": "998935919989","date":"26.10.2021 00:00:01","bc_number": "513168315"}",  "options": {  "raw": {  "language": "json"  }  }  },  "url": {  "raw": ["http://vpn.texnomart.uz:8282/ut_trendy_xran_javohir/hs/api/v1.1/debt/"][1],  "protocol": "http",  "host": [  "vpn",  "texnomart",  "uz"  ],  "port": "8282",  "path": [  "ut_trendy_xran_javohir",  "hs",  "api",  "v1.1",  "debt",  ""  ]  }  },  

Ответ на успех с помощью почтальона здесь

NB: Я младший разработчик, поэтому буду признателен за любую помощь в этом!

Комментарии:

1. propertiesService.getValue(authLogin ":" authPassword) Действительно ли возвращает что-то полезное?

2. да, братан, но я не могу вставить экран в поле для комментариев

3. Вы должны вставить всю цепочку исключений для лучшего понимания проблемы. Кроме того, распечатайте журнал и проверьте, возвращаете ли вы propertiesService.getValue() те же значения, что и ожидалось.

Ответ №1:

У вас может возникнуть проблема с типом URL или HttpEntity. Так что попробуйте это, посмотрите на результат.

 ResponseEntitylt;Stringgt; response = restTemplate.exchange( "https://url",   HttpMethod.GET, new HttpEntitylt;TexnoMartRequestDtogt;   (texnoMartRequestDto,headers), String.class);  

Комментарии:

1. я проверяю много раз, братан, но только это исключение я получаю на данный момент у меня нет 3 строк в редакторе кода, мой друг говорит мне, что у вас есть имя пользователя и пароль, и вы устанавливаете логин и пароль с заголовками.setBasicAuth(authLogin, authPassword); таким образом, как вы думаете, братан, это правда