簡體   English   中英

如何在Java中使用HttpsUrlConnection

[英]how to use HttpsUrlConnection in java

我有一個命令行:

curl -u username:passwd -k "https://myserver/a/b/c"

它有效,當我在Ubuntu或Cygwin下調用它時,我會獲得正確的信息。

現在,我願意用Java完成它。 所以我有這樣的Java代碼:

    public class Test {

    public static String auth = "username:passwd";
    public static String url = "https:/myserver/a/b/c";

    public static void main(String[] args) {
        try {
            URL url = new URL(url);
            final byte[] authBytes = auth.getBytes(StandardCharsets.UTF_8);
            String encoding = java.util.Base64.getEncoder().encodeToString(authBytes);
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();

            connection.setRequestMethod("POST");

            connection.setRequestProperty("Authorization", encoding);

            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

            String line;

            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

但是它似乎不起作用,總是返回HTTP響應代碼411。java代碼是否有問題?

提前致謝。

HTTP響應代碼411表示“服務器在沒有定義Content-Length的情況下拒絕接受請求”。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

HttpsUrlConnection應該能夠為您做到這一點。 檢出setFixedLengthStreamingMode() 我認為您還需要setDoOutput()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM