【问题标题】:Getting "401" response code when trying to connect local server?尝试连接本地服务器时收到“401”响应代码?
【发布时间】:2018-01-18 15:08:06
【问题描述】:

我有一个在 http://192.168.0.101:8080/ 上运行的本地服务器。每当我尝试使用以下代码 ping 服务器时,我得到的响应代码为“401”。我的服务器要求密码为“12345”

try {
    URL url = new URL("http://192.168.0.101:8080/");  
    HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
    urlc.setRequestMethod("GET");
    urlc.setConnectTimeout(10 * 1000);          // 10 s.
    urlc.connect();

    System.out.println("code" + urlc.getResponseCode());
    if (urlc.getResponseCode() == 200) {        // 200 = "OK" code (http connection is fine).
         System.out.println("Connection success");

    } else {
        System.out.println("Connection nada");
    }
} catch (MalformedURLException e1) {
    System.out.println("MalformedURLException");
} catch (IOException e) {
    System.out.println("IOException nada");
}

【问题讨论】:

  • 你没有“ping”。
  • 如何对运行在 8080 端口的服务器执行“PING”cmd?

标签: java get httpurlconnection http-status-code-401


【解决方案1】:

http Status Code 401,表示未经授权的访问,您需要在请求的同时发送WWW-Authenticate header。

401(未授权)状态码表示该请求尚未应用,因为它缺少目标资源的有效身份验证凭据。生成 401 响应的服务器必须发送 WWW-Authenticate 标头字段(第 4.1 节),其中包含至少一个适用于目标资源的质询。

有不同的身份验证方案可用(即 Basic、Digest 或 OAuth),其中一个是 Basic 身份验证,如下所示。

//you code
//
String userCredentials = "username:password";
String basicAuth = "Basic " + new String(new Base64().encode(userCredentials.getBytes()));
urlc.setRequestProperty ("Authorization", basicAuth);
urlc.setRequestMethod("GET");
// your code

【讨论】:

  • 你能告诉我怎么做吗?修改我当前的代码?
  • 谢谢,这有帮助。
猜你喜欢
  • 2012-07-02
  • 1970-01-01
  • 2018-09-22
  • 2019-12-10
  • 2023-03-03
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多