Saya ingin mencoba mengonversi curl ke kode JAVA. kode cURL di php berfungsi dengan baik tetapi di Java ada masalah ini adalah kode php

$urlt="http://api.xxxxxxx/xxxxx";
        $apikey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        $camp="id";

            $ch = curl_init();

            curl_setopt($ch, CURLOPT_URL,$urlt);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_POSTFIELDS, array('apikey' => $apikey, 'apif' => 'ge', 'camp' => $camp));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            $server_output = curl_exec ($ch);

            curl_close ($ch);

Dan ini adalah konversi saya ke java

String apikey="xxxxxxx";
        String camp="17";
        URL url = new URL("http://xxxxxxx/xxxxxxxx");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();


        con.setRequestMethod("POST");


        con.setInstanceFollowRedirects(true);

        String postData = "apikey"+apikey+"apif=ge"+"camp"+camp; // I need somthing like this 
        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();


        int code = con.getResponseCode(); // 200 = HTTP_OK
        System.out.println("Response    (Code):" + code);
        System.out.println("Response (Message):" + con.getResponseMessage());


        DataInputStream input = new DataInputStream(con.getInputStream());
        int c;
        StringBuilder resultBuf = new StringBuilder();
        while ( (c = input.read()) != -1) {
            resultBuf.append((char) c);
        }
        input.close();

        return resultBuf.toString();

Dan ini adalah out putnya

Respons (Kode):200 Respons (Pesan): OK API KUNCI DIPERLUKAN

-1
Bilal ELbakhti 16 November 2017, 01:02

1 menjawab

Jawaban Terbaik

Anda tidak mengkodekan parameter Anda dengan benar. Anda kehilangan pemisah = dan &:

"apikey="+apikey+"&apif=ge"+"&camp="+camp

Jika ada cara agar perpustakaan melakukan penyandian untuk Anda, seperti yang Anda lakukan dalam contoh CURL menggunakan array(...), itu biasanya jauh lebih aman.

0
tadman 15 November 2017, 22:03