В моем приложении я получаю данные с помощью веб-сервисов. Но когда сервер выключен или не находится в активном состоянии, он выдает код ответа 500 и приложение закрывается.
Пожалуйста, объясните мне, как справиться с этим условием в моем приложении. Вывод logcat показан ниже:
<code>12-05 12:17:22.337: V/response code(950): 500
12-05 12:17:22.347: W/System.err(950): org.json.JSONException: A JSONArray text must start with '[' at character 1 of <html>
12-05 12:17:22.347: W/System.err(950): <head>
12-05 12:17:22.347: W/System.err(950): <title>Configuration Error</title>
12-05 12:17:22.347: W/System.err(950): <style>
12-05 12:17:22.347: W/System.err(950): body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
12-05 12:17:22.347: W/System.err(950): p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
12-05 12:17:22.347: W/System.err(950): b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
12-05 12:17:22.347: W/System.err(950): H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
12-05 12:17:22.347: W/System.err(950): H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
12-05 12:17:22.356: W/System.err(950): pre {font-family:"Lucida Console";font-size: .9em}
12-05 12:17:22.356: W/System.err(950): .marker {font-weight: bold; color: black;text-decoration: none;}
12-05 12:17:22.356: W/System.err(950): .version {color: gray;}
12-05 12:17:22.356: W/System.err(950): .error {margin-bottom: 10px;}
12-05 12:17:22.356: W/System.err(950): .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
12-05 12:17:22.356: W/System.err(950): </style>
12-05 12:17:22.356: W/System.err(950): </head>
12-05 12:17:22.356: W/System.err(950):
12-05 12:17:22.356: W/System.err(950): <body bgcolor="white">
12-05 12:17:22.366: W/System.err(950):
12-05 12:17:22.366: W/System.err(950): <span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
12-05 12:17:22.366: W/System.err(950):
12-05 12:17:22.366: W/System.err(950): <h2> <i>Configuration Error</i> </h2></span>
12-05 12:17:22.366: W/System.err(950):
12-05 12:17:22.366: W/System.err(950): <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
12-05 12:17:22.366: W/System.err(950):
12-05 12:17:22.366: W/System.err(950): <b> Description: </b>An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
12-05 12:17:22.377: W/System.err(950): <br><br>
12-05 12:17:22.377: W/System.err(950):
12-05 12:17:22.377: W/System.err(950): <b> Parser Error Message: </b>Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.<br><br>
12-05 12:17:22.377: W/System.err(950):
12-05 12:17:22.377: W/System.err(950): <b>Source Error:</b> <br><br>
12-05 12:17:22.377: W/System.err(950):
12-05 12:17:22.377: W/System.err(950): <table width=100% bgcolor="#ffffcc">
12-05 12:17:22.377: W/System.err(950): <tr>
12-05 12:17:22.377: W/System.err(950): <td>
12-05 12:17:22.377: W/System.err(950): <code><pre>
12-05 12:17:22.377: W/System.err(950):
12-05 12:17:22.377: W/System.err(950): Line 30: <error statusCode="404" redirect="filenotfound.htm" />
12-05 12:17:22.377: W/System.err(950): Line 31: </customErrors>
12-05 12:17:22.377: W/System.err(950): <font color=red>Line 32: <compilation debug="true" targetFramework="4.0">
12-05 12:17:22.396: W/System.err(950): </font>Line 33: <expressionBuilders>
12-05 12:17:22.396: W/System.err(950): Line 34: <add expressionPrefix="NopResources" type="NopSolutions.NopCommerce.BusinessLogic.Localization.NopResourceExpressionBuilder, Nop.BusinessLogic" />
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22,396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
Исходный файл: C: \ Websites \ balajeebazaar \ web.config
& nbsp; & nbsp; Строка: 32
12-05 12: 17: 22,396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950):
12-05 12: 17: 22.396: W / System.err (950): <ширина часа = размер 100% = 1 цвет = серебро>
12-05 12: 17: 22.407: W / System.err (950):
12-05 12: 17: 22.407: W / System.err (950):
Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.4963; ASP.NET версия: 2.0.50727.4955
12-05 12: 17: 22.407: W / System.err (950):
12-05 12: 17: 22.407: W / System.err (950):
12-05 12: 17: 22.407: W / System.err (950):
12-05 12: 17: 22.416: W / System.err (950):
12-05 12: 17: 22.416: W / System.err (950):
12-05 12: 17: 22.416: W / System.err (950): <! -
12-05 12: 17: 22.416: W / System.err (950): [ConfigurationErrorsException]: нераспознанный атрибут 'targetFramework'. Обратите внимание, что имена атрибутов чувствительны к регистру. (C: \ Websites \ balajeebazaar \ web.config строка 32)
12-05 12: 17: 22.416: W / System.err (950): по адресу System.Web.HttpRuntime.HostingInit (HostingEnvironmentFlags hostingFlags)
12-05 12: 17: 22.416: W / System.err (950): [HttpException]: нераспознанный атрибут targetFramework. Обратите внимание, что имена атрибутов чувствительны к регистру. (C: \ Websites \ balajeebazaar \ web.config строка 32)
12-05 12: 17: 22.416: W / System.err (950): в System.Web.HttpRuntime.FirstRequestInit (контекст HttpContext)
12-05 12: 17: 22.416: W / System.err (950): at System.Web.HttpRuntime.EnsureFirstRequestInit (контекст HttpContext)
12-05 12: 17: 22.416: W / System.err (950): в System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, контекст HttpContext)
12-05 12: 17: 22.416: W / System.err (950): -> <! -
12-05 12: 17: 22.426: W / System.err (950): эта страница ошибки может содержать конфиденциальную информацию, поскольку ASP.NET настроен для отображения подробных сообщений об ошибках с помощью & lt; customErrors mode = "Off" / & gt ;. Попробуйте использовать & lt; customErrors mode = "On" / & gt; или & lt; customErrors mode = "RemoteOnly" / & gt; в производственных условиях .-->
12-05 12: 17: 22.426: W / System.err (950): at org.json.JSONTokener.syntaxError (JSONTokener.java:448)
12-05 12: 17: 22.426: W / System.err (950): в org.json.JSONArray. (JSONArray.java:104)
12-05 12: 17: 22.426: W / System.err (950): at org.json.JSONArray. (JSONArray.java:150)
12-05 12: 17: 22.426: W / System.err (950): at cm.bzaar.CallWebservices.getCategory (CallWebservices.java:48)
12-05 12: 17: 22.426: W / System.err (950): at cm.bzaar.CategoryActivity $ Loader.doInBackground (CategoryActivity.java:98)
12-05 12: 17: 22.426: W / System.err (950): at cm.bzaar.CategoryActivity $ Loader.doInBackground (CategoryActivity.java:1)
12-05 12: 17: 22.436: W / System.err (950): на android.os.AsyncTask $ 2.call (AsyncTask.java:185)
12-05 12: 17: 22.436: W / System.err (950): at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:256)
12-05 12: 17: 22.436: W / System.err (950): на java.util.concurrent.FutureTask.run (FutureTask.java:122)
12-05 12: 17: 22.436: W / System.err (950): по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:648)
12-05 12: 17: 22.436: W / System.err (950): на java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:673)12-05 12: 17: 22.436: W / System.err (950): at java.lang.Thread.run (Thread.java:1060)
12-05 12: 17: 22.436: W / dalvikvm (950): threadid = 17: поток завершается с необработанным исключением (группа = 0x4001aa28)
12-05 12: 17: 22.446: E / AndroidRuntime (950): необработанный обработчик: поток AsyncTask # 1 завершает работу из-за необработанного исключения
12-05 12: 17: 22.446: E / AndroidRuntime (950): java.lang.RuntimeException: произошла ошибка при выполнении doInBackground ()
12-05 12: 17: 22.446: E / AndroidRuntime (950): на android.os.AsyncTask $ 3.done (AsyncTask.java:200)
12-05 12: 17: 22.446: E / AndroidRuntime (950): на java.util.concurrent.FutureTask $ Sync.innerSetException (FutureTask.java:234)
12-05 12: 17: 22.446: E / AndroidRuntime (950): в java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:258)
12-05 12: 17: 22.446: E / AndroidRuntime (950): по адресу java.util.concurrent.FutureTask.run (FutureTask.java:122)
12-05 12: 17: 22.446: E / AndroidRuntime (950): по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:648)
12-05 12: 17: 22.446: E / AndroidRuntime (950): по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:673)
12-05 12: 17: 22.446: E / AndroidRuntime (950): на java.lang.Thread.run (Thread.java:1060)
12-05 12: 17: 22.446: E / AndroidRuntime (950): вызвано: java.lang.NullPointerException
12-05 12: 17: 22.446: E / AndroidRuntime (950): at cm.bzaar.CategoryActivity $ Loader.doInBackground (CategoryActivity.java:100)
12-05 12: 17: 22.446: E / AndroidRuntime (950): at cm.bzaar.CategoryActivity $ Loader.doInBackground (CategoryActivity.java:1)
12-05 12: 17: 22.446: E / AndroidRuntime (950): на android.os.AsyncTask $ 2.call (AsyncTask.java:185)
12-05 12: 17: 22.446: E / AndroidRuntime (950): at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:256)
12-05 12: 17: 22.446: E / AndroidRuntime (950): ... еще 4
СМ. СЛЕДУЮЩИЙ КОД:
сегмент кода, где вызывается функция для вызова веб-службы:
@Override
protected Void doInBackground(Void... arg0) {
CategoryArray = new JSONArray();
CategoryArray = CW
.getCategory("url");
for (int i = 0; i <= CategoryArray.length() - 1; i++) {
try {
Log.v("category array : ", CategoryArray.getString(i));
String[] val = CategoryArray.getString(i).split("•");
CategoryID.add(i, val[0]);
CategoryList.add(i, val[1]);
} catch (JSONException e) {
e.printStackTrace();
}
}
adapter = new CategoryListAdapter(CategoryActivity.this,
CategoryList);
return null;
}
функция для вызова веб-службы:
public JSONArray getCategory(String URL){
try {
HttpPost request = new HttpPost(URL);
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
// Send request to WCF service
DefaultHttpClient httpClient1 = new DefaultHttpClient();
HttpResponse response = httpClient1.execute(request);
Log.v("response code", response.getStatusLine().getStatusCode()
+ "");
responseCode = response.getStatusLine().getStatusCode();
// if(responseCode > 200){ // HERE I WS TRYING TO BREAK THE CODE AND TRYING TO RETURN NULL BT UNABLE TO DO SO
// CategoryArray = new JSONArray();
// CategoryArray.put(false);
// return null;
// }else{
HttpEntity responseEntity = response.getEntity();
// Read response data into buffer
char[] buffer = new char[(int) responseEntity.getContentLength()];
InputStream stream = responseEntity.getContent();
InputStreamReader reader = new InputStreamReader(stream);
reader.read(buffer);
stream.close();
CategoryArray = new JSONArray(new String(buffer));
Log.v("results length : ", CategoryArray.length() + "");
// }
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return CategoryArray;
}
см. Строку, где я сравниваю код ответа. Пожалуйста, объясните мне, как я могу разбить мой код там и покажу тост за пользовательский интерфейс