Java中使用基本身份验证进行Get和Post API调用

3

我想在不使用任何框架的情况下,使用基本认证调用 java 中的 GETPOST API。请问有没有一些教程链接可以帮助我?在谷歌上,我只找到了关于 Spring 框架的代码,但是我不使用 Spring。我正在寻找使用基本认证调用API的代码。

如果API已经被基本认证保护,并且它是一个 POST 方法,我需要在以下 代码 中添加具有 身份验证 的新 url。考虑到我是一个新手,所以不太清楚需要做哪些修改。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

public class NetClientGet {

    public static void main(String[] args)  {
        
        try
        {
            System.out.println("Inside the main function");
             URL weburl=new URL("http://dummy.restapiexample.com/api/v1/employees");
             HttpURLConnection conn = (HttpURLConnection) weburl.openConnection();
             conn.setRequestMethod("GET");
             conn.setRequestProperty("Accept", "application/json");
             System.out.println("Output is: "+conn.getResponseCode());
             System.out.println("Output is: ");
             System.setProperty("http.proxyHost", null);
             //conn.setConnectTimeout(60000);
             if(conn.getResponseCode()!=200)
             {
                 System.out.println(conn.getResponseCode());
                 throw new RuntimeException("Failed : HTTP Error Code: "+conn.getResponseCode());
             }
             System.out.println("After the 2 call ");
             InputStreamReader in=new InputStreamReader(conn.getInputStream());
             BufferedReader br =new BufferedReader(in);
             String output;
             while((output=br.readLine())!=null)
             {
                 System.out.println(output);
             }
             conn.disconnect();
             
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
        
    }
}

2
你有尝试过什么吗?那个认证只是HTTP请求中的一个头字段。 - f1sh
我已添加了有问题的代码。我能够使用不需要授权的API。但我不知道如何使用接受基本认证的POST API。我没有使用Spring。 - Shruti sharma
2
你已经设置了一个名为 Accept 的头。以同样的方式添加 Authentication 头。在这里查看:https://dev59.com/umcs5IYBdhLWcg3wk0-X - f1sh
谢谢@f1sh,我会仔细阅读。 - Shruti sharma
1个回答

4

基本认证

参考RFC #2617的第二部分:基本认证方案

在请求中添加Authentication头。这里是一个示例:

String username = "john";
String password = "pass";
// ...
URL weburl=new URL("http://dummy.restapiexample.com/api/v1/employees");
HttpURLConnection conn = (HttpURLConnection) weburl.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
// snippet begins
conn.setRequestProperty("Authorization",
  "Basic " + Base64.getEncoder().encodeToString(
    (username + ":" + password).getBytes()
  )
);
// snippet ends
System.out.println("Output is: "+conn.getResponseCode());

POST方法

关于在HttpURLConnection中使用POST方法的更多信息,请参见此答案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接