简体   繁体   中英

cURL command to Java

I have a cURL command I want to translate in Java

curl -H "Key: XXX" -d url=http://www.google.com http://myapi.com/v2/extraction?format=json

It works fine.

I started to do in Java: (CODE EDITED, it works)

            try {
        // POST
        System.out.println("POSTING");
        URL url = new URL("http://myapi.com/v2/extraction?format=json");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Key", "XXX");
        String data =  "http://www.google.com";
        OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());

        writer.write("url=" +data);
        writer.close();

        int responseCode = connection.getResponseCode();
        System.out.println("\nSending 'POST' request to URL : " + url);
        System.out.println("Post parameters : " + data);
        System.out.println("Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        System.out.println("REPOSNE" +response.toString());

        if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
            // OK
        } else {
            // Server returned HTTP error code.
        }
        } catch (MalformedURLException e) {
        // ...
        } catch (IOException e) {
        // ...
        }

But I don't know how to set my arguments.

Thanks for your help.

Jean

If you mean to set a header field Key with value XXX you can use the setRequestProperty

ie

conn.setRequestProperty("Key", "XXX");

If you want to send data, use

String data = "url=http://www.google.com";
conn.setRequestProperty("Content-Length", "" + Integer.toString(data.getBytes().length));

EDIT:-

For posting data as form url encoded, try the following code

String data  = "url=" + URLEncoder.encode("http://www.google.com", "UTF-8");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
wr.write(data.getBytes());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM