У меня есть конечная точка odata с проверкой подлинности HMAC. В основном это обычная
Http URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
String currentUTCTime = getCurrentUTCTime();
Map<String, String> headers = new LinkedHashMap<>();
headers.put("x-csod-date", currentUTCTime);
headers.put("x-csod-session-token", sessionToken);
con.setRequestProperty("x-csod-date", currentUTCTime);
con.setRequestProperty("x-csod-session-token", sessionToken);
String stringToSign = constructStringToSign(con.getRequestMethod(), headers, url.getPath());
String sig = signString512(stringToSign, sessionSecret);
con.setRequestProperty("x-csod-signature", sig);
System.out.println("signation is : "+sig);
//*********
con.setConnectTimeout(90000);
con.setReadTimeout(99000);
int status = con.getResponseCode();
Я пытался повторить то же самое с помощью клиента Apache olingo
ODataClient client = ODataClientFactory.getV4();
String serviceRoot = "https://knet.csod.com/services/api/x/odata/api/views/vw_rpt_transcript";
URI url=new URI(serviceRoot);
ODataRawRequest req=
client.getRetrieveRequestFactory().getRawRequest(url);
req.setXHTTPMethod("GET");
String currentUTCTime = getCurrentUTCTime();
req.addCustomHeader("x-csod-date",currentUTCTime);
req.addCustomHeader("x-csod-session-token",sessionToken);
Map<String, String> headers = new LinkedHashMap<>();
headers.put("x-csod-date", currentUTCTime);
headers.put("x-csod-session-token", sessionToken);
String stringToSign = constructStringToSign(req.getMethod().name(), headers, serviceRoot);
String sig = signString512(stringToSign, sessionSecret);
req.addCustomHeader("x-csod-signature",sig);
ODataResponse res=req.execute();
первый httpкод работает, и я получаю ответы, но мой код odata выдает 401 несанкционированную ошибку
Исключение в потоке "main" org.apache.olingo.client.api.communication.ODataClientErrorException: (401) Исключение неавторизованного CSOD:Проверьте свои учетные данные.[HTTP / 1.1 401 неавторизовано] в org.apache.olingo.client.core.communication.header.ODataErrorResponseChecker.checkResponse (ODataErrorResponseChecker.java:73) в org.apache.olingo.client.core.communche.qures(AbstractRequest.java:53) в org.apache.olingo.client.core.communication.request.AbstractODataRequest.doExecute (AbstractODataRequest.java:324) в org.apache.olingo.client.core.communication.request.retrieve.ODmplaw.execute (ODataRawRequestImpl.java:66) в GetClient.main (GetClient.java:180)