DSS API - 403 error when using the POST API CALL
Could you kindly assist me guide the client on the below request.
Case Details : We are getting a 403 error when using the POST API CALL to https://selectapi.datascope.refinitiv.com/RestApi/v1/
in order to get a login token.
User: 9032560
Further details :
Below is the code we're using and the error message we're getting back.
Code:
string serviceUrl = serviceBaseURL + @Authentication/RequestToken;
//string token = string.Empty;
string body = "{{\"Credentials\": {{\"Username\": \"{0}\",\"Password\": \"{1}\"}}}}";
body = string.Format(body, username, password);
var proxy = new WebProxy
{
Address = new Uri(proxyURL),
BypassProxyOnLocal = false,
UseDefaultCredentials = false,
};
// Now create a client handler which uses that proxy
var httpClientHandler = new HttpClientHandler
{
Proxy = proxy,
};
using (var httpClient1 = new HttpClient(httpClientHandler))
{
httpClient1.Timeout = new TimeSpan(0, 60, 0);
using (var request = new HttpRequestMessage(new HttpMethod("POST"), serviceUrl))
{
request.Headers.TryAddWithoutValidation("accept", "*/*");
request.Content = new StringContent(body);
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
HttpResponseMessage response = httpClient1.SendAsync(request).Result;
if (response.IsSuccessStatusCode)
{
string result = response.Content.ReadAsStringAsync().Result;
dynamic dynListEntries = JsonConvert.DeserializeObject(result);
token = dynListEntries.value.ToString();
}
else
{
Dts.TaskResult = (int)ScriptResults.Failure;
Dts.Events.FireError(2, "Token", "Failed to get token", "", 0);
}
}
}
Error:
System.AggregateException: One or more errors occurred. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
--- End of inner exception stack trace ---
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at ST_ddc11e0dcb914ab6981ed8578445d403.ScriptMain.Main()
---> (Inner Exception #0) System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
--- End of inner exception stack trace ---<---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at ST_ddc11e0dcb914ab6981ed8578445d403.ScriptMain.Main() Exception: System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
--- End of inner exception stack trace ---
Best Answer
-
Ask the client to try this code:
class Program
{
static async Task Login(HttpClient httpClient)
{
using StringContent jsonContent = new(
JsonSerializer.Serialize(new {
Credentials = new {
Username = "****",
Password = "****"
}
}), Encoding.UTF8, "application/json");
using HttpResponseMessage response = await httpClient.PostAsync("Authentication/RequestToken", jsonContent);
if (!response.IsSuccessStatusCode) {
Console.WriteLine("Error, unable to get token");
Console.WriteLine(response.Content!.ReadAsStringAsync());
return;
}
var strResponse = await response.Content.ReadAsStringAsync();
// deserialize json string response to JsonNode object
var data = JsonSerializer.Deserialize<JsonNode>(strResponse);
Console.WriteLine(data);
}
static async Task Main(string[] args)
{
HttpClient sharedClient = new()
{
BaseAddress = new Uri("https://selectapi.datascope.refinitiv.com/RestApi/v1/"),
};
await Login(sharedClient);
Console.WriteLine("Done");
}
}0
Answers
-
403 error brief is shared to the client and also requested them to check this error with their Network team while LSEG is reviewing .
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 685 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 252 ETA
- 556 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 652 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 193 TREP Infrastructure
- 228 TRKD
- 917 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛