2017-06-15 6 views
1

Iは、Java(ジャワ)HttpURLConnectionのにカール(PHP)からHTTP POST変換

// 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()); 

ように(https://www.cryptocoincharts.info/tools/apiから採取した)PHPコードの下に変換しようとしました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

私が見ている限り、2つの実装の主な違いは$postという変数に関連しています。

$postはキー/値の配列ですが、Javaでは値の部分しか表示されません。私は、あなたが重要な部分を言及していなかったpairs=ltc_usd,ppc_btc

+0

あなたは男です。長い間問題に座っている。ありがとう! – iappmaker

+0

もう一度ありがとう!私は今受け入れることができました。 – iappmaker

+0

興味深い質問だと思います – freedev

1

postData変数の内容を変更することをお勧め

、値のみが言及されています。また、PHP APIからデータを取得する際に、連想配列があります。あなたが出力を表示したい場合は、特定の連想配列のキーと値を知る必要があります。 InputStreamとOutputStreamはtry-resources内にある必要があります

関連する問題