gpt4 book ai didi

java - Android HttpURLConnection 始终未经授权的 401 响应(Spring Boot REST API)

转载 作者:行者123 更新时间:2023-12-01 09:06:48 25 4
gpt4 key购买 nike

我正在尝试通过我在 Android Studio 中开发的 Android 应用程序使用 REST API。我使用 Spring Boot 开发了 API。

问题:

每当我调用 API 时,我总是会返回 401 未经授权的响应。 “调用了预先验证的入口点。拒绝访问。”

我的 CORS 配置如下:
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800

我的 api 正在 localhost:8080 上运行,并且我正在使用我的 WLAN IPv4 地址从我的设备发出请求。

如:curl -v -X GET http://192.168.1.xx:8080/api/users
这将返回 200 OK 响应。
我也可以在 postman /DHC 等中调用此方法并收到 200 OK 响应。

但是,当我通过 Android 设备使用 HttpURLConnection 调用同一地址时,我收到 401 响应。

菜鸟开发人员 - 任何有关可能导致此问题的原因的想法将不胜感激!

编辑以包含我的 GET 请求:

@Override
protected String doInBackground(String... params){
String stringUrl = params[0];
String result;
String inputLine;
try {
//Create a URL object holding our url
URL myUrl = new URL(stringUrl);
//Create a connection
HttpURLConnection connect =(HttpURLConnection)
myUrl.openConnection();
connect.setRequestMethod(REQUEST_METHOD); // GET
connect.setRequestProperty("Host", HOST);
connect.setRequestProperty("Connection", "keep-alive");
connect.setRequestProperty("Origin", ORIGIN);
connect.setRequestProperty("User-Agent", System.getProperty("http.agent"));
connect.setRequestProperty("Content-Type", CONTENT_TYPE);
connect.setRequestProperty("Accept", "*/*");
connect.setRequestProperty("Accept-Encoding", ACCEPT_ENCODING);
connect.setRequestProperty("Accept-Language", ACCEPT_LANGUAGE);

connect.setDoOutput(true);
connect.setDoInput(true);

//Connect to our url
connect.connect();
String responseMessage = connect.getResponseMessage(); // Unathorized
int responseCode = connect.getResponseCode(); //401
//Create a new InputStreamReader
InputStreamReader streamReader = new
InputStreamReader(connect.getInputStream());
//Create a new buffered reader and String Builder
BufferedReader reader = new BufferedReader(streamReader);
StringBuilder stringBuilder = new StringBuilder();
//Check if the line we are reading is not null
while((inputLine = reader.readLine()) != null){
stringBuilder.append(inputLine);
}
//Close our InputStream and Buffered reader
reader.close();
streamReader.close();
//Set our result equal to our stringBuilder
result = stringBuilder.toString();
}
catch(IOException e){
e.printStackTrace();
result = null;
}
return result;
}

最佳答案

替换:-

InputStreamReader StreamReader = 新 InputStreamReader(connect.getInputStream());

与:-

InputStreamReader StreamReader = 新 InputStreamReader(connect.getErrorStram());

这将帮助您跟踪出现 401 的原因,然后您可以继续解决该问题。

401--是服务器端问题,服务器无法处理您的请求,请检查您在使用 get 请求时是否必须在 header 或 url 中传递数据

关于java - Android HttpURLConnection 始终未经授权的 401 响应(Spring Boot REST API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com