java - 使用基本身份验证在 Java 中获取和发布 API 调用

标签 java jax-rs jax

我想在 java 中调用 GETPOST API,而不使用任何 framework。我需要使用基本身份验证。谁能帮我提供一些教程链接。在 google 中,我只在 spring 框架中找到代码,但我没有使用 Spring。我正在寻找使用基本身份验证调用 API 的代码。

我必须在下面的 code 中添加带有 authentication 的新 url。如果 API 使用 basic auth 进行保护并且是 POST 方法,则需要进行哪些修改。我是 java 的新手,所以不太了解。

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());
        }
        
    }
}

最佳答案

基本认证

请参阅 RFC#2617 第 2 节:Basic Authentication Scheme

Authentication header 添加到请求中。这是一个例子:

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 方法

参见 this answer有关将 POST 方法与 HttpURLConnection 结合使用的更多信息。

关于java - 使用基本身份验证在 Java 中获取和发布 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62564502/

相关文章:

java - 为什么 Playframework 告诉我它不支持子类化?

java - 我如何获得两个日期之间的天数,包括时间?

java - 如何在 java 中调整 tiff 图像的大小?

java - 如何通过分段文件上传接受表单参数

tomcat - JAX-RS Web 服务的冲突错误消息

jit - 如何使用 JAX 打印

python - JAX 与 JIT 和自定义差异化

python - 用于 xarray 的 JAX pytree

java - Android TextView 与 Marquee 和 layout_weight 不滚动

web-services - 如何在 REST Web 服务中放置多个查询参数