使用基本身份验证在 Java 中获取和发布 API 调用
Posted
技术标签:
【中文标题】使用基本身份验证在 Java 中获取和发布 API 调用【英文标题】:Get and Post API call in java with basic authentication 【发布时间】:2020-10-15 06:29:28 【问题描述】:我想在java
中调用GET
和POST
API,而不使用任何framework
。我需要使用基本身份验证。任何人都可以帮我提供一些教程链接。在谷歌中,我只在spring
框架中找到了代码,但我没有使用Spring
。我正在寻找使用basic authentication.
调用API 的代码
我必须在下面的code
中添加新的url
和authentication
。如果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());
【问题讨论】:
你有没有尝试过?该身份验证只是 HTTP 请求中的标头字段。 我已经添加了有问题的代码。我可以在没有身份验证的情况下使用 API。但我不知道如何使用接受基本身份验证的 POST API。我没有使用弹簧。 您已经设置了一个名为Accept
的标头。以相同的方式添加 Authentication
标头。看这里:***.com/questions/12732422/…
谢谢@f1sh 我也会经历同样的事情。
【参考方案1】:
基本认证
请参阅 RFC #2617 第 2 节:Basic Authentication Scheme
将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 方法的更多信息,请参阅 this answer。
【讨论】:
以上是关于使用基本身份验证在 Java 中获取和发布 API 调用的主要内容,如果未能解决你的问题,请参考以下文章
无法将令牌附加到 API 调用(基本身份验证、AFNetworking)
Firebase 云功能,具有对外部 api 的基本身份验证的获取请求