J'ai essayé de créer quelque chose comme un site EC en utilisant l'API de Yahoo, mais je suis tombé dans une situation où je ne savais pas du tout comment l'utiliser. Je ne l'ai pas compris même si je l'ai recherché, et c'était assez difficile, alors je vais l'enregistrer avec la signification du mémo.
Au fait, j'apprends Java depuis environ 3 mois.
Apparemment, la façon d'envoyer une requête à l'API est de se connecter à l'URL, Il y avait une classe pour ça. C'est la ** classe HttpURLConnection **.
Les étapes de base sont
C'est comme ça.
//ID d'application
String appid = "ID d'application";
//Reçoit les mots clés du produit et les stocke dans le type String
request.setCharacterEncoding("UTF-8");
String query = request.getParameter("searchVal");
//URL de la demande
String url = "https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid="+appid+"&query="+query;
//Génération d'URL pour la connexion API
URL url4conn = new URL(url);
//Obtenir une connexion à l'URL pour la connexion à l'API
HttpURLConnection conn = (HttpURLConnection)url4conn.openConnection();
//Spécifiez la méthode HTTP pour GET
conn.setRequestMethod("GET");
//Ne pas autoriser la soumission d'une demande par l'organisme
conn.setDoOutput(false);
//Permettre la transmission corporelle de la réponse
conn.setDoInput(true);
//Lien
conn.connect();
Apparemment, pour obtenir la réponse de l'API, utilisez BufferedReader pour lire la réponse. Cependant, comme vous pouvez obtenir la ** chaîne de caractères JASON ** au stade de la lecture, vous devez la convertir en ** nœud JASON (type pour JSON) ** à l'aide de la bibliothèque.
Les étapes de base sont
C'est comme ça.
//Lire la réponse(Obtenir la chaîne JASON)
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String json = br.readLine();
//Lire la chaîne JSON et la convertir en objet JsonNode
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);
Les étapes de base sont
C'est comme ça.
Utilisez ** JsonNode.get () ** pour récupérer un élément spécifique à partir d'un nœud JSON.
//Générer une ArrayList qui stocke des Beans contenant des résultats de recherche de produits
ArrayList<productDataBeans> pdbList = new ArrayList<productDataBeans>();
//Extraire 10 éléments de JSON et stocker dans le type String
//Définissez-le dans Beans et stockez Beans dans ArrayList
for(int i = 0; i <= 9; i++) {
String hitNum = String.valueOf(i);
String imageURL = root.get("ResultSet").get("0").get("Result").get(hitNum).get("Image").get("Small").textValue();
String productName = root.get("ResultSet").get("0").get("Result").get(hitNum).get("Name").textValue();
String price = root.get("ResultSet").get("0").get("Result").get(hitNum).get("Price").get("_value").textValue();
int SearchResultNum = root.get("ResultSet").get("totalResultsAvailable").asInt();
//Générer une instance de Beans pour stocker les résultats de la recherche de produits
productDataBeans pdb = new productDataBeans();
pdb.setImageURL(imageURL);
pdb.setProductName(productName);
pdb.setPrice(price);
pdb.setQuery(query);
pdb.setSearchResultNum(SearchResultNum);
pdbList.add(pdb);
}
//Stocker ArrayList dans la portée de la requête
request.setAttribute("resultData", pdbList);
br.close();
request.getRequestDispatcher("/search.jsp").forward(request, response);
J'ai mentionné que vous devez convertir la chaîne JSON lue en un nœud JSON, mais dans le cas de Jackson, vous avez besoin de trois bibliothèques.
・ Jackson-core ・ Jackson-annotations ・ Jackson-databind
Vous pouvez le télécharger en sélectionnant la version liée et en appuyant sur le bouton Bundle.
Recommended Posts