Привет! Я использую API MOV ie и хочу передать строку заголовка MOV ie метке в моем классе контроллера. Я проанализировал json и могу получить и распечатать заголовок mov ie, но я пытаюсь передать эту информацию классу контроллера, чтобы она отображалась в приложении gui.
Вот мой основной класс, который анализирует json и получает данные.
package apipractice;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class ApiPractice{
private static HttpURLConnection connection;
private static String title;
public static void main(String[] args) throws JSONException{
BufferedReader reader; //Reads the input stream
String line; //reads everyline
StringBuffer responseContent = new StringBuffer(); //used to append each line and build the response content
try {
//Method 1: Java.net.HttpURLConnection
URL url = new URL ("http://data.tmsapi.com/v1.1/movies/showings?startDate=2020-03-07&zip=27403&units=mi&imageSize=Lg&imageText=true&api_key=myapikey");
try {
connection = (HttpURLConnection) url.openConnection();
//Request setup
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000); //5000 ms = 5 secs
connection.setReadTimeout(5000);
int status = connection.getResponseCode();
//System.out.println(status);
if(status > 299){
reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
while((line = reader.readLine()) != null){
responseContent.append(line);
}
reader.close();
} else {
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((line = reader.readLine()) != null){
responseContent.append(line);
}
reader.close();
}
// System.out.println(responseContent.toString());
parse(responseContent.toString());
} catch (IOException ex) {
Logger.getLogger(ApiPractice.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (MalformedURLException ex) {
Logger.getLogger(ApiPractice.class.getName()).log(Level.SEVERE, null, ex);
} finally{
connection.disconnect();
}
}
public static String parse(String responseBody) throws JSONException{
JSONArray movies = new JSONArray(responseBody);
JSONObject mov1 = movies.getJSONObject(0);
title = mov1.getString("title");
System.out.println(title);
title.toString();
return null;
}
public static String getTitle(){
return title;
}
}
Этот класс может извлекать данные из json и распечатывать первый заголовок mov ie. Я хочу передать заголовок mov ie классу контроллера и установить его равным метке.
Вот мой класс контроллера.
package apipractice;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
/**
* FXML Controller class
*
* @author
*/
public class WorkController implements Initializable {
@FXML
private Label test;
ApiPractice api = new ApiPractice();
String title = api.getTitle();
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
test.setText(title);
}
}
Когда я запускаю приложение текст метки пуст, поэтому я думаю, что данные не передаются в класс контроллера. Как я могу получить заголовок из основного класса и установить его равным метке в классе контроллера?
Спасибо.