Repository: Project-MONAI/MONAI

Issue:
`_get_all_ngc_models` uses `requests.get` and need to check the returned data
**Describe the bug**
When I played with https://github.com/Project-MONAI/tutorials/blob/master/modules/transfer_mmar.ipynb, I met the following error:

```
---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
/tmp/ipykernel_799/1997768389.py in <module>
      3 if PRETRAINED:
      4     print("using a pretrained model.")
----> 5     unet_model = load_from_mmar(
      6         mmar, mmar_dir=root_dir,
      7         map_location=device,

/opt/monai/monai/apps/mmars/mmars.py in load_from_mmar(item, mmar_dir, progress, version, map_location, pretrained, weights_only, model_key, api, model_file)
    224     if not isinstance(item, Mapping):
    225         item = get_model_spec(item)
--> 226     model_dir = download_mmar(item=item, mmar_dir=mmar_dir, progress=progress, version=version, api=api)
    227     if model_file is None:
    228         model_file = os.path.join("models", "model.pt")

/opt/monai/monai/apps/mmars/mmars.py in download_mmar(item, mmar_dir, progress, api, version)
    139     mmar_dir = Path(mmar_dir)
    140     if api:
--> 141         model_dict = _get_all_ngc_models(item.get(Keys.NAME, f"{item}") if isinstance(item, Mapping) else f"{item}")
    142         if len(model_dict) == 0:
    143             raise ValueError(f"api query returns no item for pattern {item}.  Please change or shorten it.")

/opt/monai/monai/apps/mmars/mmars.py in _get_all_ngc_models(pattern, page_index, page_size)
     82     else:
     83         raise ValueError("NGC API requires requests package.  Please install it.")
---> 84     model_list = json.loads(resp.text)
     85     model_dict = {}
     86     for result in model_list["results"]:

/opt/conda/lib/python3.8/json/__init__.py in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    355             parse_int is None and parse_float is None and
    356             parse_constant is None and object_pairs_hook is None and not kw):
--> 357         return _default_decoder.decode(s)
    358     if cls is None:
    359         cls = JSONDecoder

/opt/conda/lib/python3.8/json/decoder.py in decode(self, s, _w)
    335 
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()
    339         if end != len(s):

/opt/conda/lib/python3.8/json/decoder.py in raw_decode(self, s, idx)
    353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
```



Discussion:

Resolving patch:
diff --git a/monai/apps/mmars/mmars.py b/monai/apps/mmars/mmars.py
--- a/monai/apps/mmars/mmars.py
+++ b/monai/apps/mmars/mmars.py
@@ -77,6 +77,7 @@ def _get_all_ngc_models(pattern, page_index=0, page_size=50):
     requests_get, has_requests = optional_import("requests", name="get")
     if has_requests:
         resp = requests_get(full_url)
+        resp.raise_for_status()
     else:
         raise ValueError("NGC API requires requests package.  Please install it.")
     model_list = json.loads(resp.text)


Test patch: