我正在尝试创建登录名,并且用户信息位于远程服务器上,但是当我运行应用程序以获取 token 时,我不断收到类型 W/System.err: java.io.FileNotFoundException 的错误:
https://uat.elma.bz/revenueapi/token “.Api 正在通过 Postman 运行,不确定可能是什么问题,请您提出建议。
private class userlogin extends AsyncTask<String, String, String> {
@Override
public void onPreExecute() {
/* progressDialog = new ProgressDialog(userLogin.this);
progressDialog.setMessage("please wait as you get connected to the internet");
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.show();*/
}
@Override
public String doInBackground(String... para) {
String response = "";
Map<String, String> params = new LinkedHashMap<>();
URL url = null;
try {
url = new URL(webconfigs.LOGIN_URL);
} catch (MalformedURLException e) {
e.printStackTrace();
}
;
params.put("grant_type", webconfigs.GRANT_TYPE);
params.put("username", para[0]);
params.put("Content-Type", webconfigs.CONTENT_TYPE);
params.put("password", para[1]);
StringBuilder postData = new StringBuilder();
for (Map.Entry<String, String> param : params.entrySet()) {
try {
if (postData.length() != 0) postData.append('&');
try {
postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
postData.append('=');
postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
} catch (Exception e) {
}
}
try {
String urlparameters = postData.toString();
URLConnection conn = url.openConnection();
conn.setRequestProperty("Method", "POST");
conn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(urlparameters);
writer.flush();
String line = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//just to show the result
Log.e("READER", response);
while (String.valueOf(line = reader.readLine()) != null) {
response += line;
}
writer.close();
reader.close();
return response;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.e(">>>>LOGINSERVERRESPONSE", ">>>>>" + result);
//progressDialog.dismiss();
try {
JSONObject results = new JSONObject(result);
String token = results.getString("access_token");
if (token != null) {
String accessToken = results.getString("access_token");
String tokenType = results.getString("token_type");
String dateIssued = results.getString(".issued");
String expiryDate = results.getString(".expires_in");
startActivity(new Intent(getApplicationContext(), Homedashboard.class));
}
} catch (Exception e) {
}
}
}
最佳答案
您可以在 AndroidManifest.xml 中添加此部分 (android:usesCleartextTraffic="true") 吗?像这样。
<manifest ...>
<application
...
android:usesCleartextTraffic="true">
</application>
</manifest>
关于java - 无法使用 asynchTask 从服务器获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60076141/