HTTP/1.1 403 Forbidden
Content-Type: text/xml
Date: Wed, 29 Apr 2020 20:52:01 GMT
Retry-After: 11279
Server: Mashery Proxy
X-Error-Detail-Header: Account Over Rate Limit
X-Mashery-Error-Code: ERR_403_DEVELOPER_OVER_RATE
X-Mashery-Responder: prod-j-worker-us-east-1d-62.mashery.com
Content-Length: 28
Connection: keep-alive
X-DNS-Prefetch-Control: off
So from the error code, I guess the API key has reached its rate limit?
Since this issue is related more to IEEEXplore, I think displaying an alert could be better for the end-user.
Log File
org.jabref.logic.importer.FetcherException: A network error occurred
at org.jabref/org.jabref.logic.importer.SearchBasedParserFetcher.performSearch(SearchBasedParserFetcher.java:80)
at org.jabref/org.jabref.gui.importer.fetcher.WebSearchPaneViewModel.lambda$search$1(WebSearchPaneViewModel.java:94)
at org.jabref/org.jabref.gui.util.BackgroundTask$1.call(BackgroundTask.java:47)
at org.jabref/org.jabref.gui.util.DefaultTaskExecutor$1.call(DefaultTaskExecutor.java:142)
at javafx.graphics/javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://ieeexploreapi.ieee.org/api/v1/search/articles?apikey=88e6y7nucfkqtp5vay7rytja&querytext=10.1109%2FSEAA.2010.29
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1977)
at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1972)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1971)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1539)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1523)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
at org.jabref/org.jabref.logic.net.URLDownload.asInputStream(URLDownload.java:262)
at org.jabref/org.jabref.logic.importer.SearchBasedParserFetcher.performSearch(SearchBasedParserFetcher.java:69)
... 10 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://ieeexploreapi.ieee.org/api/v1/search/articles?apikey=88e6y7nucfkqtp5vay7rytja&querytext=10.1109%2FSEAA.2010.29
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1927)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1523)
at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)
at org.jabref/org.jabref.logic.net.URLDownload.openConnection(URLDownload.java:319)
at org.jabref/org.jabref.logic.net.URLDownload.asInputStream(URLDownload.java:254)
... 11 more
When performing a web search using IEEEXplore, JabRef throws a FetcherException. When I tried to make the request manually, this was the response header:
So from the error code, I guess the API key has reached its rate limit?
Since this issue is related more to IEEEXplore, I think displaying an alert could be better for the end-user.
Log File
org.jabref.logic.importer.FetcherException: A network error occurred
at org.jabref/org.jabref.logic.importer.SearchBasedParserFetcher.performSearch(SearchBasedParserFetcher.java:80)
at org.jabref/org.jabref.gui.importer.fetcher.WebSearchPaneViewModel.lambda$search$1(WebSearchPaneViewModel.java:94)
at org.jabref/org.jabref.gui.util.BackgroundTask$1.call(BackgroundTask.java:47)
at org.jabref/org.jabref.gui.util.DefaultTaskExecutor$1.call(DefaultTaskExecutor.java:142)
at javafx.graphics/javafx.concurrent.Task$TaskCallable.call(Task.java:1425)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://ieeexploreapi.ieee.org/api/v1/search/articles?apikey=88e6y7nucfkqtp5vay7rytja&querytext=10.1109%2FSEAA.2010.29
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1977)
at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1972)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1971)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1539)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1523)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
at org.jabref/org.jabref.logic.net.URLDownload.asInputStream(URLDownload.java:262)
at org.jabref/org.jabref.logic.importer.SearchBasedParserFetcher.performSearch(SearchBasedParserFetcher.java:69)
... 10 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://ieeexploreapi.ieee.org/api/v1/search/articles?apikey=88e6y7nucfkqtp5vay7rytja&querytext=10.1109%2FSEAA.2010.29
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1927)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1523)
at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)
at org.jabref/org.jabref.logic.net.URLDownload.openConnection(URLDownload.java:319)
at org.jabref/org.jabref.logic.net.URLDownload.asInputStream(URLDownload.java:254)
... 11 more