java - HttpUrlConnection 身份验证不起作用

标签 java curl httpurlconnection

这是我尝试复制的curl 命令:

下面是curl请求。

    curl user:password@localhost:8080/foo/bar -d property_one=value_one -d property_two=value_two -d property_three=value_three

这是 httpurlconnection 的代码

    URL thisurl = new URL ("http://localhost:8080/foo");
    String encoding = Base64Encoder.base64Encode("user:password");

    HttpURLConnection connection = (HttpURLConnection) thisurl.openConnection();
    connection.setRequestMethod("GET");
    connection.setDoOutput(true);
    connection.addRequestProperty("property_one", "value_one");
    connection.addRequestProperty("property_two", "value_two");
    connection.addRequestProperty("property_three", "property_three");
    connection.setRequestProperty  ("Authorization", "Basic " + encoding);
    InputStream content = (InputStream)connection.getInputStream();

在 connection.getInputStream() 行上,我收到 401 错误。我的身份验证错误吗?

最佳答案

connection.setRequestMethod("GET");

此处将方法设置为“GET”,这与 curl 中使用的方法相同。

connection.setDoOutput(true);

这里您隐式地将其设置为“POST”,这是不一样的,因此您没有任何理由期望相同的结果。

不要手动完成所有这些身份验证。使用java.net.Authenticator。这就是它的用途。

关于java - HttpUrlConnection 身份验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983613/

相关文章:

java - 如何从 jTextFields 向 jTable 插入数据?

curl - 如何从 cURL 命令实现 jmeter 请求发布

java - org.apache.http.entity.FileEntity在Android 6中已弃用(棉花糖)

Android:HttpURLConnection 抛出 EOFException

java - 如何让 HttpUrlConnection 返回 JSON 格式的数据?

java - handleRequestInternal 和 handleRequest 的区别

java - 如何使用枚举值获取枚举

java - 致命异常 : java. lang.IllegalArgumentException fd 只能在 Android Q 中的 PrintAdapter 类的 onwrite() 中为 null

javascript - 如何使用 PHP/CURL/Javascript 等从 mca.gov.in 获取公司详细信息?

PHP 使用 cURL 下载一个巨大的电影文件 (500 MB)