Программисты JAVA общаются здесь
Anonymous
Запрос API: не работает из Android Studio
Сообщение
Anonymous » 27 янв 2025, 10:19
Всякий раз, когда я пытаюсь получить запрос API с: "
http://api.openweathermap.org/data/2.5/weather?q=london "
код не может получить данные.
Однако это работает нормально с другими URL -адресами. Вот основной файл Java.
Я взял добавленные необходимые разрешения в и манифестном файле. < /P>
Код: Выделить всё
package thebestone.vicky.jsondemo;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.ExecutionException;
public class MainActivity extends AppCompatActivity {
class GetData extends AsyncTask{
@Override
protected String doInBackground(String... strings) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try{
url = new URL(strings[0]);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while(data != -1){
char ch = (char) data;
result = result + ch;
data = reader.read();
}
return result;
}catch (Exception e) {
e.printStackTrace();
return "Failed";
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("DATA FETCHED: ", s);
}
}
public void onClick(View view){
GetData task = new GetData();
task.execute("http://api.openweathermap.org/data/2.5/weather?q=London");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
< /code>
logcat: < /p>
08-18 19:05:10.478 2380-4307/thebestone.vicky.jsondemo W/System.err: java.io.FileNotFoundException: http://api.openweathermap.org/data/2.5/weather?q=London
08-18 19:05:10.480 2380-4307/thebestone.vicky.jsondemo W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)
08-18 19:05:10.480 2380-4307/thebestone.vicky.jsondemo W/System.err: at thebestone.vicky.jsondemo.MainActivity$GetData.doInBackground(MainActivity.java:33)
08-18 19:05:10.480 2380-4307/thebestone.vicky.jsondemo W/System.err: at thebestone.vicky.jsondemo.MainActivity$GetData.doInBackground(MainActivity.java:19)
08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:305)
08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.lang.Thread.run(Thread.java:761)
08-18 19:05:10.481 2380-2380/thebestone.vicky.jsondemo I/DATA FETCHED:: Failed
Кроме того, я не могу выяснить ошибку в логарифме и программе.
Любая помощь будет полезна. быть оцененным по достоинству.
Подробнее здесь:
https://stackoverflow.com/questions/457 ... oid-studio
1737962342
Anonymous
Всякий раз, когда я пытаюсь получить запрос API с: "http://api.openweathermap.org/data/2.5/weather?q=london" код не может получить данные. Однако это работает нормально с другими URL -адресами. Вот основной файл Java. Я взял добавленные необходимые разрешения в и манифестном файле. < /P> [code]package thebestone.vicky.jsondemo; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.ExecutionException; public class MainActivity extends AppCompatActivity { class GetData extends AsyncTask{ @Override protected String doInBackground(String... strings) { String result = ""; URL url; HttpURLConnection urlConnection = null; try{ url = new URL(strings[0]); urlConnection = (HttpURLConnection)url.openConnection(); InputStream in = urlConnection.getInputStream(); InputStreamReader reader = new InputStreamReader(in); int data = reader.read(); while(data != -1){ char ch = (char) data; result = result + ch; data = reader.read(); } return result; }catch (Exception e) { e.printStackTrace(); return "Failed"; } } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.i("DATA FETCHED: ", s); } } public void onClick(View view){ GetData task = new GetData(); task.execute("http://api.openweathermap.org/data/2.5/weather?q=London"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } < /code> logcat: < /p> 08-18 19:05:10.478 2380-4307/thebestone.vicky.jsondemo W/System.err: java.io.FileNotFoundException: http://api.openweathermap.org/data/2.5/weather?q=London 08-18 19:05:10.480 2380-4307/thebestone.vicky.jsondemo W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250) 08-18 19:05:10.480 2380-4307/thebestone.vicky.jsondemo W/System.err: at thebestone.vicky.jsondemo.MainActivity$GetData.doInBackground(MainActivity.java:33) 08-18 19:05:10.480 2380-4307/thebestone.vicky.jsondemo W/System.err: at thebestone.vicky.jsondemo.MainActivity$GetData.doInBackground(MainActivity.java:19) 08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:305) 08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 08-18 19:05:10.481 2380-4307/thebestone.vicky.jsondemo W/System.err: at java.lang.Thread.run(Thread.java:761) 08-18 19:05:10.481 2380-2380/thebestone.vicky.jsondemo I/DATA FETCHED:: Failed [/code] Кроме того, я не могу выяснить ошибку в логарифме и программе. Любая помощь будет полезна. быть оцененным по достоинству. Подробнее здесь: [url]https://stackoverflow.com/questions/45758040/api-request-not-working-from-android-studio[/url]