DSS Java API - Extract via https proxy

Hi,

I downloaded the java test code from TR to retrieve data from DSS.

I'm trying to run DSS2EndOfDayClient.java but I can't pass through my proxy servers.

Can you give me the code to add the proxy server name and user/password ?

Thank you !

Best Answer

  • Unknown
    Answer ✓

    Hi, I solved my issues, see below.

    /* * ==================================================================== * This Java example demonstrate how to make an HTTPS request to DSS2 * to retrieve a Session Token. This sample is written for use with a * proxy server. *  * To run this example, you must provide a DSS2 username, password and * the proxy server hostname and proxy port. * ==================================================================== */package bnpparibas.ip.datascopehttps;
    import org.apache.http.Header;import org.apache.http.HttpHost;import org.apache.http.HttpResponse;import org.apache.http.auth.AuthScope;import org.apache.http.auth.UsernamePasswordCredentials;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.CredentialsProvider;import org.apache.http.client.ResponseHandler;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.conn.ssl.SSLContextBuilder;import org.apache.http.conn.ssl.TrustSelfSignedStrategy;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.BasicCredentialsProvider;import org.apache.http.impl.client.BasicResponseHandler;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.DefaultProxyRoutePlanner;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.json.JSONOrderedObject;
    import java.io.*;import java.net.MalformedURLException;import java.security.KeyManagementException;import java.security.KeyStoreException;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;import java.util.List;import java.util.Scanner;
    public class DSS2ProxyTokenClient { private static final String urlHost = "https://hosted.datascopeapi.reuters.com/RestApi/v1"; private String sessionToken = ""; private CloseableHttpClient httpClient;
     public static void main(String[] args) throws Exception {
     if (args.length < 4) { System.out.println("Please enter ARGS : Reuters UserName / Reuters User Pwd / Proxy Name / Proxy Port / Proxy UserName / Proxy User Pwd"); System.exit(-1); }
     int pPort = Integer.parseInt(args[3]);
     DSS2ProxyTokenClient dss2 = new DSS2ProxyTokenClient(); dss2.getSessionToken(args[2], pPort, args[4], args[5], args[0], args[1]); promptEnterKey();
     // End Of Day On Demand Extraction report dss2.endOfDayExtractRequest();
     dss2.httpClient.close(); }
     public void getSessionToken(String proxyHostName, int proxyPortNumber, String proxyUsername, String proxyPassword, String username, String password) {
     try { // Set proxy information for HTTP Components HttpHost proxy = new HttpHost(proxyHostName, proxyPortNumber); DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope(proxyHostName, proxyPortNumber, AuthScope.ANY_REALM), new UsernamePasswordCredentials(proxyUsername, proxyPassword));
     SSLContextBuilder sslContextBuilder = new SSLContextBuilder(); sslContextBuilder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContextBuilder.build()); httpClient = HttpClients.custom() .setSSLSocketFactory(sslsf) .setRoutePlanner(routePlanner) .setDefaultCredentialsProvider(credsProvider) .build();
     // Issue a POST request HttpPost httppost = new HttpPost(urlHost + "/Authentication/RequestToken"); httppost.addHeader("content-type", "application/json; charset=UTF-8");
     JSONObject TokenRequest = new JSONObject() .put("Credentials", new JSONObject() .put("Username", username) .put("Password", password));
     StringEntity requestBody = new StringEntity(TokenRequest.toString());
     httppost.setEntity(requestBody);
     ResponseHandler<String> responseHandler = new BasicResponseHandler();
     String response = httpClient.execute(httppost, responseHandler); JSONObject jsonResponse = new JSONObject(response);
     sessionToken = jsonResponse.get("value").toString(); System.out.println("Session Token (expires in 24 hours):\n" + sessionToken);
     } catch (MalformedURLException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } }

Answers