2017-06-15 47 views
1

我想下面的PHP代碼(從https://www.cryptocoincharts.info/tools/api拍攝)轉換成Java從捲曲(PHP)轉換HTTP POST到HttpURLConnection類(JAVA)

// define pairs 
$post = array("pairs" => "ltc_usd,ppc_btc"); 

// fetch data 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "http://api.cryptocoincharts.info/tradingPairs"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
$rawData = curl_exec($curl); 
curl_close($curl); 

// decode to array 
$data = json_decode($rawData); 

// show data 
echo "<pre>"; 
foreach ($data as $row) 
{ 
    echo "Price of ".$row->id.": ".$row->price."\n"; 
    echo "Trade this pair on ".$row->best_market."\n"; 
} 
echo "</pre>"; 

的Java代碼

URL url = new URL("http://api.cryptocoincharts.info/tradingPairs"); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

    // CURLOPT_POST 
    con.setRequestMethod("POST"); 

    // CURLOPT_FOLLOWLOCATION 
    con.setInstanceFollowRedirects(true); 

    String postData = "ltc_usd,ppc_btc"; 
    con.setRequestProperty("Content-length", String.valueOf(postData.length())); 

    con.setDoOutput(true); 
    con.setDoInput(true); 

    DataOutputStream output = new DataOutputStream(con.getOutputStream()); 
    output.writeBytes(postData); 
    output.close(); 

    // "Post data send ... waiting for reply"); 
    int code = con.getResponseCode(); // 200 = HTTP_OK 
    System.out.println("Response (Code):" + code); 
    System.out.println("Response (Message):" + con.getResponseMessage()); 

    // read the response 
    DataInputStream input = new DataInputStream(con.getInputStream()); 
    int c; 
    StringBuilder resultBuf = new StringBuilder(); 
    while ((c = input.read()) != -1) { 
     resultBuf.append((char) c); 
    } 
    input.close(); 
    System.out.println("resultBuf.toString() " + resultBuf.toString()); 

由於每個API,將其轉換爲java後,我應該只獲取LTC和PPC詳細信息的詳細信息。相反,我得到一個奇怪的Json與所有交易對。

2 $post = array("pairs" => "ltc_usd,ppc_btc"); Posted the PHP code as I am not known the exact equivalent in Java 

請問您能否指出我的從PHP到Java的轉換是否正確?

+1

@Berger在這種情況下,OP的Java代碼是正確的。他有一個移植問題。 – freedev

回答

3

據我看到的,兩種實現之間的主要區別是關係到$post變量。

在PHP實現$post是鍵/值數組,但在Java中,我只看到了價值的一部分。

我建議改變postData變量的內容到pairs=ltc_usd,ppc_btc

+0

你是男人。與這個問題長時間坐在一起。謝謝 ! – iappmaker

+0

再次感謝!我現在能夠接受。 – iappmaker

+0

我認爲這是一個有趣的問題 – freedev

1

你沒有提到的關鍵組成部分,只有價值被提及。當我們從PHP API獲取數據時,我們有一個關聯數組。如果你想顯示輸出,你需要知道特定關聯數組的鍵和值。 而InputStream和OutputStream應該是內部的try-資源