For a deeper look into our DataScope Select REST API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials

question

Upvotes
1 0 0 2

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 ---

#technologyerror-403
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

403 error brief is shared to the client and also requested them to check this error with their Network team while LSEG is reviewing .

1 Answer

· Write an Answer
Upvotes
24.5k 63 15 21

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");
    }
}
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.