Ich versuche, JSON von einer URL in einer Android-App zu laden (die URL nur Links zu JSON-Daten, gibt es nichts anderes). Momentan versuche ich nur den Inhalt der URL in einen String zu laden.Der Versuch, JSON von einer URL zu laden und nicht zu wissen, wie man mit Ausnahmen behandelt
Das Problem, das ich habe, ist, dass ich die Ausnahmen behandeln muss, aber ich bin nicht damit vertraut.
Hier ist der relevante Teil meiner Klasse 'Funktionen':
static public String loadURL(String inputURL) throws Exception {
String fullString = "";
URL url = new URL(inputURL);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
fullString += line;
}
reader.close();
return fullString;
}
Dies ist, was ich zur Zeit mit (in einer anderen Klasse) zu Testzwecken:
Toast.makeText(Setup.this, Functions.loadURL("http://www.exampleJSON.com"), Toast.LENGTH_LONG).show();
I‘ Ich plane, die Ausgabe zu verwenden, um JSON-Daten für if-Anweisungen zu extrahieren, in sharedPreferences zu speichern und anzuzeigen.
EDIT
Hier ist, was ich verwende die Methode aufzurufen:
public class Setup extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup);
final SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = preferences.edit();
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
final EditText editText = (EditText) findViewById(R.id.editText);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.setup_region_spinner, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
//BUTTON PRESS
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor.putString("Server", String.valueOf(spinner.getSelectedItem()));
if (String.valueOf(spinner.getSelectedItem()).equals("EUW")) {
}
else if (String.valueOf(spinner.getSelectedItem()).equals("NA")) {
try {
Toast.makeText(Setup.this, Functions.loadURL("https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/" +
editText.getText().toString().replaceAll("\\s", "") +
"?api_key=cbc50791-3c4d-45e6-b0c1-8aa204ced475"), Toast.LENGTH_LONG).show();
}catch(Exception e){
e.printStackTrace();
}
}
//ERROR
else {
Toast.makeText(Setup.this, "Server selection error", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
Der Try-Block wurde gerade hinzugefügt, nachdem sie durch die Antworten zu lesen. Ein weiterer wurde in meiner loadURL-Methode hinzugefügt. Es scheint für jetzt zu funktionieren.
Ich bekomme jetzt Fehler, weil ich versuchte, dies auf dem Hauptthread auszuführen. Ich muss mehr darüber lesen.
Danke, aber das löst nur einen Teil des Problems. Wo ich versuche, die Funktion aufzurufen, bekomme ich immer noch einen Fehler, der mir sagt, dass ich mit Ausnahmen umgehen soll. –
Können Sie den Code von wo Sie die Methode aufrufen? –
Sie müssen versuchen, versuchen fangen .. dort auch –