Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将php curl转换为java_Java - Fatal编程技术网

如何将php curl转换为java

如何将php curl转换为java,java,Java,我希望尝试将curl转换为JAVA代码。php中的cURL代码工作得很完美,但在java中存在一个问题,这就是php代码 $urlt="http://api.xxxxxxx/xxxxx"; $apikey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; $camp="id"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$urlt);

我希望尝试将curl转换为JAVA代码。php中的cURL代码工作得很完美,但在java中存在一个问题,这就是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);
这是我对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();
这就是我们的出路

答复(代码):200 响应(消息):OK
需要API密钥

您没有正确编码参数。您缺少一个
=
&
分隔符:

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

如果有一种方法让库为您进行编码,就像您在CURL示例中使用
数组(…)
,通常会安全得多。

我将post转换为字符串postData=“apikey”+apikey+”&apif=ge“+”&camp=“+camp=”,但同样的问题您需要仔细注意这里的每个字符,它们都很重要
“apikey=“
“apikey”
。请更正字符和另一个问题,我将添加con.setRequestProperty(“内容类型”,String.valueOf(postData.length());这是错误的,如果成功了,请将其标记为已接受。如果你还有其他问题,那也没关系,但一定要把这些问题分开,作为单独的问题提出来,这样他们才能得到他们需要的关注。