2016-05-05 3 views
-1

Javaアプリケーションを編集中で、安全なサードパーティAPIにアクセスしようとしています。渡す必要がある2つの文字列変数と、セキュアなアクセスのためのIDとトークンがあります。以下のコードはMavenを使用しています。私はちょうどJavaのコードを微調整しようとしています。Java - セキュアなHTTPSサードパーティAPIへのアクセス

public class JavaApiStreaming { 
public static void main (String[]args) throws IOException { 

    HttpClient httpClient = HttpClientBuilder.create().build(); 

    try { 

     // Set these variables to whatever personal ones are preferred 
     String domain = "https://stream-fxpractice.oanda.com";// trying to access this api 
     String access_token = "ACCESS-TOKEN"; //using this token 
     String account_id = "1234567"; //using this ID 
     String instruments = "EUR_USD,USD_JPY,EUR_JPY"; 

//これは私が編集しようとしているコードの一部です。私の知る限りこれは//コード化されています。 HttpUriRequest httpGet =新しいHttpGet(ドメイン+ "/ v1/prices?accountId =" + account_id + "& instruments =" + instruments);httpGet.setHeader(新しいBasicHeader( "Authorization"、 "Bearer" + access_token));

 System.out.println("Executing request: " + httpGet.getRequestLine()); 

     HttpResponse resp = httpClient.execute(httpGet); 
     HttpEntity entity = resp.getEntity(); 

     if (resp.getStatusLine().getStatusCode() == 200 && entity != null) { 
      InputStream stream = entity.getContent(); 
      String line; 
      BufferedReader br = new BufferedReader(new InputStreamReader(stream)); 

      while ((line = br.readLine()) != null) { 

       Object obj = JSONValue.parse(line); 
       JSONObject tick = (JSONObject) obj; 

       // unwrap if necessary 
       if (tick.containsKey("tick")) { 
        tick = (JSONObject) tick.get("tick"); 
       } 

       // ignore heartbeats 
       if (tick.containsKey("instrument")) { 
        System.out.println("-------"); 

        String instrument = tick.get("instrument").toString(); 
        String time = tick.get("time").toString(); 
        double bid = Double.parseDouble(tick.get("bid").toString()); 
        double ask = Double.parseDouble(tick.get("ask").toString()); 

        System.out.println(instrument); 
        System.out.println(time); 
        System.out.println(bid); 
        System.out.println(ask); 
       } 
      } 
     } else { 
      // print error message 
      String responseString = EntityUtils.toString(entity, "UTF-8"); 
      System.out.println(responseString); 
     } 

    } finally { 
     httpClient.getConnectionManager().shutdown(); 
    } 
} 

}

+0

問題を再現するためにコードを最小限に抑えることができますか? – evolutionxbox

+0

https://stream-fxpractice.oanda.comに接続しようとしています。このAPIにアクセスするには安全なログインであるため、ログインを確認するためにヘッダーに渡す必要があるString access_token = "ACCESS-TOKEN"とString account_id = "1234567"があります。私はMavenなしでJavaでこれをやろうとしています....彼らは "HTTPClient"と "HttpClientBuilder"を使用しています。私はちょうど直接URLConnectionを使用して、maven architypeなしでhttps://stream-fxpractice.oanda.comにアクセスしたいと思う。 –

+0

なぜこれは "maven"とタグ付けされていますか? – bhspencer

答えて

0

あなたの代わりに任意の依存関係の標準ライブラリを使用し、基本認証ヘッダーの一部としてACCOUNT_ID /アクセストークンをエンコードする方法を求めているように思えます。私はHttpURLConnectionを使用することをお勧めします。これは、Java標準ライブラリの一部として組み込まれています。以下を試してください:

HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); 
String encoded = Base64.encode(account_id+":"+access_token); 
connection.setRequestProperty("Authorization", "Basic "+encoded); 
+0

はい。私はJavaプログラミングに精通しており、HttpUrlConnectionクラスを使ってネットワーキングに取り組んでいません。私は私の質問を逆に尋ねたと思います。助けてくれてありがとう、Jon。 –

関連する問題