Alors que j'étais invité à synchroniser mon entreprise et à créer une application iPhone, je me demandais comment passer des valeurs entre le serveur Web et l'application iPhone. A ce moment, il semble que JSON soit utilisé pour passer la valeur! J'ai appris ça. Ainsi, à la suite de diverses enquêtes, j'ai pu transmettre la valeur en utilisant JSON en toute sécurité, je vais donc le résumer.
J'écris avec les connaissances acquises grâce à la formation et à l'auto-apprentissage des nouveaux employés, donc s'il y a quelque chose qui ne va pas ou une meilleure façon, veuillez commenter ...
L'écran ressemble à ceci.
Le flux est comme ça. ① Cliquez sur le bouton "Obtenir JSON" et passez un nombre aléatoire à JavaServlet. (2) JavaServlet répond avec JSON en fonction de la valeur numérique reçue. ③ Swift convertit l'objet JSON reçu et affiche la valeur à l'écran.
Le JSON obtenu à partir de JavaServlet est sorti dans la zone entourée par le cadre rouge. En outre, implémentez tout dans l'environnement local.
Développé avec Xcode et Eclipse. Lors de l'utilisation de JSON, j'étais perdu à propos de GSON ou de Jackson, mais cette fois, j'ai utilisé Jackson. Pour savoir comment configurer Jackson avec Eclipce, reportez-vous à ce qui suit. https://tech.pjin.jp/blog/2020/03/09/jackson_setup/
Xcode Écran pour obtenir JSON
ViewController.swift
import UIKit
class ViewController: UIViewController {
//Afficher le texte
var textId = ""
var textName = ""
//Déclaration du tableau tapple
var studentList:[(id:String , name:String)] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func getJson(_ sender: Any) {
self.performSegue(withIdentifier: "goResultVC", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//URL de la requête Spécifiez un servlet qui renvoie JSON
guard let req_url = URL(string: "http://localhost:8080/servlet_test/JsonServlet")
else{return}
//Générer les informations requises pour la demande
var req = URLRequest(url: req_url)
//0~Obtenez un nombre aléatoire de 2
let id = Int.random(in: 0...2)
//Créer une session pour gérer les transferts de données
let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue.main)
//Définissez les informations (ID) à transmettre à JavaServlet dans Body
req.httpMethod = "POST"
req.httpBody = "id=\(id)".data(using: .utf8)
//Enregistrer la demande en tant que tâche
let task = session.dataTask(with: req, completionHandler: {
(data, response ,error) in
//Fin de session
session.finishTasksAndInvalidate()
do{
//Convertir le JSON récupéré
let decoder = JSONDecoder()
let json = try decoder.decode(StudentJson.self, from: data!)
self.textId = json.id!
self.textName = json.name!
//Segue lié au bouton "Obtenir JSON"
if segue.identifier == "goResultVC" {
let nextVC = segue.destination as! ResultViewVontroller
nextVC.jsonId = self.textId
nextVC.jsonName = self.textName
}
}catch{
print(error)
print("J'ai une erreur")
}
})
//Début du téléchargement
task.resume()
}
//Structure de données JSON
struct StudentJson: Codable {
let id: String?
let name: String?
}
}
Écran de sortie JSON
ResultViewVontroller.swift
import UIKit
class ResultViewVontroller: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
//Champ de message de sortie
var jsonId = ""
var jsonName = ""
//Libellé de sortie
@IBOutlet weak var resultJsonId: UILabel!
@IBOutlet weak var resultJsonName: UILabel!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
resultJsonId.text = jsonId
resultJsonName.text = jsonName
}
}
Eclipse
Java Servlet
JsonServlet.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import bean.JsonBean;
/**
* Servlet implementation class JsonServlet
*/
@WebServlet("/JsonServlet")
public class JsonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public JsonServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
JsonBean jsonBeanList[] = new JsonBean[3];
//Définir la valeur dans l'objet Java
JsonBean jsonBean = new JsonBean();
jsonBean.setId("101");
jsonBean.setName("tanaka");
JsonBean jsonBean2 = new JsonBean();
jsonBean2.setId("102");
jsonBean2.setName("yamada");
JsonBean jsonBean3 = new JsonBean();
jsonBean3.setId("103");
jsonBean3.setName("satou");
jsonBeanList[0] = jsonBean;
jsonBeanList[1] = jsonBean2;
jsonBeanList[2] = jsonBean3;
//
String str = request.getParameter("id");
int requestId = Integer.parseInt(str);
System.out.println(requestId);
ObjectMapper mapper = new ObjectMapper();
try {
//Convertir d'un objet Java en JSON
String testJson = mapper.writeValueAsString(jsonBeanList[requestId]);
//Sortie JSON
response.getWriter().write(testJson);
//Vérifiez le JSON de sortie
System.out.println(testJson);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
Bean
JsonBean.java
package bean;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
public class JsonBean {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
Pour voir comment fonctionne JsonServlet, nous vous recommandons Talend API Tester, une extension Chrome! Talend API Tester
Vous pouvez maintenant communiquer entre le frontal et le back-end. Ensuite, passons à AWS.
De plus, j'ai fait référence à de nombreux articles et livres Qiita pour cette implémentation.
C'était un contenu médiocre, mais merci d'avoir lu!
La notation Markdown est vraiment facile à écrire.
Recommended Posts