JAva要求URLはJSONに戻る

3513 ワード

必要:
  • testCaseローカルurlにアクセスし、urlを返すjsonデータ
  • を取得する
    1、urlパス、例えばアクセスhttp://localhost:8080/spb/result
    コントローラは次のとおりです.
    @RestController
    @RequestMapping("/spb")
    public class JsonController extends MainController {
    
        private static final Logger logger = LoggerFactory.getLogger(JsonController.class);
    
        @RequestMapping("/result")
        public String resultJson() {
            return "{\"name\": \"  \",\"age\": 14,\"gender\": true,\"height\": 1.65,\"grade\": null,\"middle-school\": \"\\\"W3C\\\" Middle School\",\"skills\": [\"JavaScript\",\"Java\",\"Python\",\"Lisp\"]}";
        }

    プロジェクトアクセスurlを実行するには、次のようにします.

    ではtestCaseでこのurlパスにどのようにアクセスしてjsonデータを取得しますか?次のように
     
        @Test
        public void testJsonResult() throws IOException {
            URL connect = isConnect("http://localhost:8080/spb/result");
            if (null != connect){
                String json = loadJson(connect.toString());
                System.out.println(json);
            }
        }
    
    
        public synchronized URL isConnect(String urlStr) {
            URL url = null;
            HttpURLConnection connection = null;
            int counts = 0;
            if (urlStr == null || urlStr.length() <= 0) {
                return null;
            }
            while (counts < 5) {
                try {
                    url = new URL(urlStr);
                    connection = (HttpURLConnection) url.openConnection();
                    int code = connection.getResponseCode();
                    System.out.println(counts +" = "+code);
                    if (code == 200) {
                        System.out.println("URL  !");
                    }
                    break;
                } catch (Exception ex) {
                    counts++;
                    System.out.println("URL   ,    " + counts +" ");
                    urlStr = null;
                    continue;
                }
            }
            return url;
        }
    
    
        public static String loadJson(String url) {
            StringBuilder json = new StringBuilder();
            try {
                URL urlObject = new URL(url);
                URLConnection uc = urlObject.openConnection();
                //    utf-8           
                BufferedReader in = new BufferedReader(new InputStreamReader(uc
                    .getInputStream(), "utf-8"));
                String inputLine = null;
                while ((inputLine = in.readLine()) != null) {
                    json.append(inputLine);
                }
                in.close();
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return json.toString();
        }

    実行効果:
     
    まちがいやすい点に注意する
  • testCaseを実行する前に、サーバが起動するかどうかを確認する必要があります(tomcatが起動しているかどうか)、起動していない場合はjsonデータ
  • が取得できません.
  • urlに接続できない場合は、tomcatのポートと同じ
  • にアクセスするポートがあるかどうかを確認します.