使用XMLHttpRequest
該網站使用JavaScript請求當前價格。
調用在控制檯(Chrome開發工具)下面的JavaScript代碼複製背景請求:
var xhr = new XMLHttpRequest();
xhr.open('post', 'http://www.svbcgold.com/LPriceSvbc.asmx/getSVBCPriceN', true);
xhr.setRequestHeader('Content-Type', "application/json");
xhr.send();
xhr.response
然後保持JSON對象,包含所有所需的信息:
"{"d":"[{\"BranchId\":9999,\"BranchDisplayName\":\"INTERNATIONAL\",\"BrPurityProductId\":9997,\"ProductDisplayName\":\"Gold\",\"PurityDisplayName\":\" \",\"ProductType\":\"U\",\"IsProductWeight\":0,\"LPrice\":\"1323.10\",\"TxtColor\":\"Black\"},{\"BranchId\":9999,\"BranchDisplayName\":\"INTERNATIONAL\",\"BrPurityProductId\":9998,\"ProductDisplayName\":\"Silver\",\"PurityDisplayName\":\"\",\"ProductType\":\"U\",\"IsProductWeight\":0,\"LPrice\":\"19.16\",\"TxtColor\":\"Black\"},{\"BranchId\":9999,\"BranchDisplayName\":\"INTERNATIONAL\",\"BrPurityProductId\":9999,\"ProductDisplayName\":\"USD/INR\",\"PurityDisplayName\":\" \",\"ProductType\":\"U\",\"IsProductWeight\":0,\"LPrice\":\"66.41\",\"TxtColor\":\"Black\"},{\"BranchId\":1,\"BranchDisplayName\":\"VISAKHAPATNAM\",\"BrPurityProductId\":1,\"ProductDisplayName\":\"Spot Gold 100g\",\"PurityDisplayName\":\"999\",\"ProductType\":\"G\",\"IsProductWeight\":0,\"LPrice\":\"315040\",\"TxtColor\":\"Black\"},{\"BranchId\":2,\"BranchDisplayName\":\"VIJAYAWADA\",\"BrPurityProductId\":2,\"ProductDisplayName\":\"Spot Gold 100g\",\"PurityDisplayName\":\"999\",\"ProductType\":\"G\",\"IsProductWeight\":0,\"LPrice\":\"315040\",\"TxtColor\":\"Black\"},{\"BranchId\":3,\"BranchDisplayName\":\"HYDERABAD\",\"BrPurityProductId\":3,\"ProductDisplayName\":\"Spot Gold 100g\",\"PurityDisplayName\":\"999\",\"ProductType\":\"G\",\"IsProductWeight\":0,\"LPrice\":\"315040\",\"TxtColor\":\"Black\"},{\"BranchId\":1,\"BranchDisplayName\":\"VISAKHAPATNAM\",\"BrPurityProductId\":1,\"ProductDisplayName\":\"Spot Silver 1kg\",\"PurityDisplayName\":\"999\",\"ProductType\":\"S\",\"IsProductWeight\":0,\"LPrice\":\"N/A\",\"TxtColor\":\"Red\"},{\"BranchId\":2,\"BranchDisplayName\":\"VIJAYAWADA\",\"BrPurityProductId\":2,\"ProductDisplayName\":\"Spot Silver 1kg\",\"PurityDisplayName\":\"999\",\"ProductType\":\"S\",\"IsProductWeight\":0,\"LPrice\":\"N/A\",\"TxtColor\":\"Red\"},{\"BranchId\":3,\"BranchDisplayName\":\"HYDERABAD\",\"BrPurityProductId\":3,\"ProductDisplayName\":\"Spot Silver 1kg\",\"PurityDisplayName\":\"999\",\"ProductType\":\"S\",\"IsProductWeight\":0,\"LPrice\":\"N/A\",\"TxtColor\":\"Red\"}]"}"
在Java可以使用java.net.HttpURLConnection
作爲請求,而JSON解析器可以使用JSON.simple來解析響應。
例Java代碼的
try {
String url = "http://www.svbcgold.com/LPriceSvbc.asmx/getSVBCPriceN";
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json;charset=utf-8");
con.setDoOutput(true);
con.connect();
OutputStream os = new BufferedOutputStream(con.getOutputStream());
os.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String response = in.readLine();
in.close();
// parse the response
JSONObject jsonObject = (JSONObject) new JSONParser().parse(response);
JSONArray jsonArray = (JSONArray) new JSONParser().parse((String)jsonObject.get("d"));
for (Object object : jsonArray) {
jsonObject = (JSONObject)object;
System.out.println(jsonObject.get("BranchDisplayName") + "\n\t" + jsonObject.get("ProductDisplayName") + " " + jsonObject.get("PurityDisplayName") + " " + jsonObject.get("LPrice"));
}
} catch (IOException | ParseException e) {
e.printStackTrace();
}
輸出
INTERNATIONAL
Gold 1323.10
INTERNATIONAL
Silver 19.16
INTERNATIONAL
USD/INR 66.41
VISAKHAPATNAM
Spot Gold 100g 999 315040
VIJAYAWADA
Spot Gold 100g 999 315040
HYDERABAD
Spot Gold 100g 999 315040
VISAKHAPATNAM
Spot Silver 1kg 999 N/A
VIJAYAWADA
Spot Silver 1kg 999 N/A
HYDERABAD
Spot Silver 1kg 999 N/A
歡迎來到Stack Overflow!您的問題陳述並不完全清楚 - 請編輯您的問題,以更全面地描述您預期會發生什麼以及與實際結果有何不同。看[問]提示什麼是一個很好的解釋。 –
這個問題是否完全解答?然後請選擇最適合的答案或在評論中發佈後續問題(請參閱http://stackoverflow.com/help/someone-answers) –