我尝试在android中构建一个应用程序,它可以从带有端口的URL服务器(例如:http://xxx.xxx.xxx.xxx:xxxx)进行json解析。因此,我找到了3种方法,如异步任务、volley和okhttp。但问题是,每次我用这些方法解析它时,总是会发生相同的异常。
java.net.ProtocalException:意外状态行: HTTP/1.1缓存-控制:无缓存
这是我的密码
class GetJSON extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Please Wait");
pDialog.setCancelable(false);
pDialog.show();
viewId = (TextView) findViewById(R.id.ID) ;
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL(urlWebService);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String json;
while ((json = bufferedReader.readLine()) != null) {
sb.append(json + "\n");
}
JSONObject data = new JSONObject(sb.toString().trim());
return sb.toString().trim();
} catch (final Exception e) {
e.printStackTrace();
resp = e.getMessage();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast toast = Toast.makeText(getApplicationContext(), resp, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER_VERTICAL, Gravity.CENTER_HORIZONTAL, 0);
toast.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(String rawData) {
super.onPostExecute(rawData);
if (pDialog.isShowing())
pDialog.dismiss();
viewId.setText(rawData);
}
}那么,有什么方法来做这个解析吗?或者有什么解决办法?
发布于 2020-11-06 01:14:31
很明显,问题不在于我正在使用的代码,而是服务器API的响应。当我点击API时,服务器没有响应,但是现在它运行得非常好!
发布于 2020-06-24 04:09:40
尝试使用postman并使用GET方法。如果它不起作用,您的URL可能有问题。并尝试查看您对URL和android的缓存控制。
发布于 2020-06-04 02:33:58
Android:usesCleartextTraffic=“真”
在你的报表中使用这个
演示:
<application
android:allowBackup="true"
android:icon="@drawable/logo"
android:label="@string/app_name"
android:roundIcon="@drawable/logo"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".Home.Pages.viewPages.Extra.CancelAlertActivity"></activity>
<activity android:name=".Home.HomeActivity" />
<activity android:name=".MapsActivity" />https://stackoverflow.com/questions/62185787
复制相似问题