Я получаю следующее сообщение об ошибке, когда я попробовать модульные тесты запустить в Android - тесты, которые проходят при запуске вне Android:FileNotFoundException в Android с HttpURLConnection
07-18 15:43:44.816: W/System.err(545): uk.co.redfruit.libraries.srpDB.exceptions.SRBClientException: java.io.FileNotFoundExce$
07-18 15:43:44.816: W/System.err(545): at uk.co.redfruit.libraries.srpDB.SRPDBClient.getContent(SRPDBClient.java:116)
07-18 15:43:44.816: W/System.err(545): at uk.co.monkeypower.android.straightrazordatabase.test.SRPDBClientTest.testGetConten$
07-18 15:43:44.826: W/System.err(545): at java.lang.reflect.Method.invokeNative(Native Method)
07-18 15:43:44.826: W/System.err(545): at java.lang.reflect.Method.invoke(Method.java:507)
07-18 15:43:44.826: W/System.err(545): at junit.framework.TestCase.runTest(TestCase.java:154)
07-18 15:43:44.826: W/System.err(545): at junit.framework.TestCase.runBare(TestCase.java:127)
07-18 15:43:44.826: W/System.err(545): at junit.framework.TestResult$1.protect(TestResult.java:106)
07-18 15:43:44.826: W/System.err(545): at junit.framework.TestResult.runProtected(TestResult.java:124)
07-18 15:43:44.826: W/System.err(545): at junit.framework.TestResult.run(TestResult.java:109)
07-18 15:43:44.826: W/System.err(545): at junit.framework.TestCase.run(TestCase.java:118)
07-18 15:43:44.826: W/System.err(545): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
07-18 15:43:44.826: W/System.err(545): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
07-18 15:43:44.826: W/System.err(545): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
07-18 15:43:44.836: W/System.err(545): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
07-18 15:43:44.836: W/System.err(545): Caused by: java.io.FileNotFoundException: http://straightrazorplace.com/srpwiki/index.$
07-18 15:43:44.836: W/System.err(545): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getIn$
07-18 15:43:44.836: W/System.err(545): at uk.co.redfruit.libraries.srpDB.SRPDBClient.getContent(SRPDBClient.java:106)
07-18 15:43:44.836: W/System.err(545): ... 13 more
Я знаю ошибку, которая появляется чтобы это произошло в Android 4.x +, но я получаю точно такую же ошибку при работе в Gingerbread.
код, который вызывает ошибку следующим образом:
StringBuilder stringBuilder = null;
try {
URL url = new URL(targetURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
stringBuilder = new StringBuilder();
String content = null;
while ((content = reader.readLine()) != null) {
stringBuilder.append(content + "\n");
}
reader.close();
} catch (IOException e) {
throw new SRBClientException(e);
}
У меня есть разрешение INTERNET в мой манифест и URL существует - я могу получить доступ к нему в браузере. Может ли кто-нибудь увидеть, где я ошибаюсь или что мне не хватает?
Обновление: Я попытался использовать basic http client как попытку обхода проблемы. Это не сработало, но это привело к совершенно другой ошибке. Он показал, что я получаю 403, что в предыдущей попытке просто привело к FileNotFound, но на этот раз также вызвало исключение JSON, поскольку возвращаемое сообщение об ошибке html не могло (очевидно) анализироваться как JSON.
Я предполагаю, то, что это на стороне сервера вопрос, хотя я озадачен, почему я получаю 403 в Android, но ни в каком другом контексте ...
можете ли вы связаться с targetURL в своем браузере? – Blackbelt
да, могу. Кроме того, все тесты проходят при запуске в junit за пределами Android –