【发布时间】:2020-09-26 06:40:38
【问题描述】:
我正在尝试处理来自 API (http://samples.openweathermap.org/data/2.5/weather?q=London,uk) 的 JSON 数据,但我在我的 logcat 窗口中得到了这个:301 Moved Permanently
这是我的班级:
public class MainActivity extends AppCompatActivity {
public class DownloadTask extends AsyncTask<String,Void,String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
return result;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("JSON",s);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask task = new DownloadTask();
task.execute("http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=439d4b804bc8187953eb36d2a8c26a02");
}
}
【问题讨论】:
-
您是否尝试在浏览器中打开网址?我已经尝试过使用邮递员并且它有效。也许您的本地网络有问题?
-
是的,我试过了,我得到了回应
-
一个 http 301 表示您正在调用的 url 是“旧的”并且已移动到另一个 url。这意味着您应该遵循通过响应中的标头传递的新 url。尝试阅读 http 标头并查找更多信息。
-
@Yusef Maali,我尝试了不同的链接并得到了回复。我不知道为什么):
-
请检查答案,您会找到所有详细信息
标签: java android android-asynctask httpurlconnection openweathermap