2014-12-13 49 views
0

我試圖獲得此URL的JSON:https://usecryptos.com/jsonapi/ticker/BTC-USD 這是通過瀏覽器進行訪問,然而,節目給了我以下錯誤:的Java得到JSON網址禁典

GRAVE: null 
java.io.IOException: Server returned HTTP response code: 403 for URL: https://usecryptos.com/jsonapi/ticker/BTC-USD 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1838) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) 
    at java.net.URL.openStream(URL.java:1038) 
    at main.JsonReader.readJsonFromUrl(JsonReader.java:28) 
    at exchanges.brazil.UseCryptos.getTicker(UseCryptos.java:62) 
    at exchanges.brazil.UseCryptos.get24hrVol(UseCryptos.java:50) 
    at exchanges.brazil.UseCryptos.<init>(UseCryptos.java:42) 
    at main.Main.init(Main.java:31) 
    at main.Main.main(Main.java:52) 

Exception in thread "main" java.lang.NullPointerException 
    at exchanges.brazil.UseCryptos.getTicker(UseCryptos.java:73) 
    at exchanges.brazil.UseCryptos.get24hrVol(UseCryptos.java:50) 
    at exchanges.brazil.UseCryptos.<init>(UseCryptos.java:42) 
    at main.Main.init(Main.java:31) 
    at main.Main.main(Main.java:52) 
Java Result: 1 

我打電話這功能,以 「體積」 和 「BTC_USD」 作爲參數:

@Override 
    public String getTicker(String info, String coin) throws JSONException{ 
     JSONObject json = null; 
     try { 
      String[] parts = coin.split("_"); 
      coin = parts[0]+"-"+parts[1]; 
      System.out.println(base_url + pairs_path_ticker[0][1] + coin); 
      json = JsonReader.readJsonFromUrl(base_url + pairs_path_ticker[0][1] + coin); 
      //json = json.getJSONObject("priVolume"); 

     } catch (IOException ex) { 
      Logger.getLogger(UseCryptos.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (JSONException ex) { 
      Logger.getLogger(UseCryptos.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     switch (info) { 

      case "vol": 
       return Double.toString(json.getDouble("priVolume")); 
      default: 
       return null; 
     } 
    } 

其他常用的功能:

public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { 
    InputStream is = new URL(url).openStream(); 
    try { 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
     String jsonText = readAll(rd); 
     JSONObject json = new JSONObject(jsonText); 
     return json; 
    } finally { 
     is.close(); 
    } 
    } 

任何人都可以幫助我嗎?

回答

0

我試着下載使用curl引用的https url,它工作正常。我也嘗試下載相同的網址,但我將https更改爲http。我得到一個html頁面,上面寫着「Object move to here」whee「here」是https url。所以可能發生的是你試圖訪問http url而不是https url。 https url包含一個JSON文件。

您可能需要使用「-k」捲曲後忽略證書
我也不得不JSON文件拆分成3行

curl https://usecryptos.com/jsonapi/ticker/BTC-USD > x.json 

    FILE: x.json 

    {"id":113,"marketName":"BTC-USD","lastPrice":377.23420530,"last24hHigh":377. 
    23420530,"last24hLow":377.23420530,"priVolume":0.00060138,"secVolume":0. 
    22686111,"ask":347.83114848,"bid":337.55042488,"change":0.13968037854984894} 

    curl http://usecryptos.com/jsonapi/ticker/BTC-USD > y.html 

    File: y.html 

    <html><head><title>Object moved</title></head><body> <h2>Object 
    moved to <a 
    href="https://usecryptos.com/jsonapi/ticker/BTC-USD">here</a>.</h2> 
    </body></html> 
+0

謝謝回答@Marichyasana,我試過的代碼只能與HTTTP,而不是https,你可以發佈你使用的代碼嗎?我沒有成功...... – Ernanirst 2014-12-13 10:34:46