AndroidアプリケーションのURLからJSONをロードしようとしています(URLはJSONデータにしかリンクしていません。 今のところ私はURLの内容をStringにロードしようとしています。URLからJSONをロードしようとしていて、例外の処理方法がわからない
私が持っている問題は、例外を処理する必要があることですが、私はそれにあまり慣れていません。私は「
Toast.makeText(Setup.this, Functions.loadURL("http://www.exampleJSON.com"), Toast.LENGTH_LONG).show();
:これはテスト目的のために(別のクラスに)私は現在使用しているものです
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;
}
:ここ
は私の「機能」クラスの関連する部分でありますm出力を使用してif文のJSONデータを抽出し、sharedPreferencesに保存して表示することを計画します。EDITここ
私はメソッドを呼び出すために使用しています何:
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) {
}
}
のtryブロックは、単に答えを読ん後に追加されました。別のものが私のloadURLメソッドに追加されました。今のところうまくいくようです。
これはメインスレッドで実行しようとしていたため、エラーが発生しています。私はそれについてもっと読む必要があります。
ありがとうございますが、それは問題の一部のみを解決します。私が関数を呼び出そうとしているところでは、例外を処理するように指示するエラーが表示されます。 –
メソッドを呼び出す場所からコードを表示できますか? –
try catchを使う必要があるかもしれません.. –