При обращении по URL с dev стэнда к API NSD запрос не проходит
https: //nsddata. ru/api/get/securities?filter={"isin” :{"$in" :["RUOOQAQJRPJ8" , "RUOGG7984944" , "RUGBGAQJUGB2" ] } }&apikey=DEMO
В чем причина может быть ошибки? Когда делаю такой запрос непосредственно в браузере то он проходит нормально и возвращает ответ, но когда пытаюсь сделать запрос со стэнда то выдает ошибку такую:
1 --- [ntainer#0-0-C-1] r.u.a.p.n.service.client.NsdClient : =s== [NSD HttpRequest] При совершении запроса
https: //nsddata. ru/api/get/securities?filter={"isin” :{"$in" :["RUOOQAQJRPJ8" , "RUOGG7984944" , "RUGBGAQJUGB2" ] } }&apikey=DEMO « NSD произошла ошибка
java. lang. IllegalArgumentException: Not enough variable values available to expand ‘"isin”’
at org.springframework.web .util.UriComponents$VarArgsTemplateVariables .getValue(UriComponents. java:37
@) ~[spring-web-5.3.22.jar!/:5.3.22]
at org.springframework.web.util.HierarchicalUriComponents$QueryUriTemplateVariables.getValue(Hierarchi
calUriComponents. java:1093) ~[spring-web-5.3.22.jar!/:5.3.22]
at org.springframework.web util .UriComponents.expandUriComponent (UriComponents. java:263) ~[spring-web-
5.3.22. jar!/:5.3.22]
at org.springframework .web.util.HierarchicalUriComponents . lambdaSexpandQueryParams$5 (HierarchicalUriCo
mponents. java:456) ~[spring-web-5.3.22.jar!/:5.3.22]
at java.base/java.util.Map.forEach(Map.java:713) ~[na:na]
public NsdClient( RestTemplate nsdRestTemplate) {
this.nsdRestTemplate = nsdRestTemplate;
}
public NsdResponse<Security[]> getSecuritiesByIsinList(final
List<String> secList, String lastDate) {
String filterJson = NsdUtils.buildFullListFilter(secList,
lastDate);
String url = UriComponentsBuilder.fromHttpUrl(baseUrl +
API_GET_SECURITIES_FILTER)
.queryParam("filter", filterJson)
.queryParam(“apikey", apikey)
.encode()
.toUraString() ;
log.info("3anpoc URL: {}", url);
return doGet(url, successHttpCode: 200, Security[].class);
}
@UtilityClass
public class NsdUtils {
public static String buildIsinFilter(List<String> secList) {
return secList.stream()
.map(isin -> "\"" + isin + "\"")
.collect (Collectors. joining(","));
}
public static String buildDateListFilter(String lastDate) {
if (lastDate != null && !lastDate.isEmpty()) {
return "{\"_at\":{\"$gte\ " + lastDate + "\"}}
}
}
public static String buildFuLLListFilter(List<String> secList,
String lastDate) {
String secListFilter = "{\"isin\":{\"$in\' +
buildIsinFilter(seclist) + "]}}";
String dateFilter = buildDateListFilter(lastDate) ;
if (!dateFilter.isEmpty()) {
return "{\"$and\":[" + secListFilter + "," + dateFilter +
"]}";
}
return secListFilter;
}
}