In my application I am fetching data using webservices.But when the server is down or not in active state it gives response code 500 and my application force close.
Please guide me how to handle this condition in my application.The logcat output is shown below :
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" /></pre></code>
12-05 12:17:22.396: W/System.err(950):
12-05 12:17:22.396: W/System.err(950): </td>
12-05 12:17:22.396: W/System.err(950): </tr>
12-05 12:17:22.396: W/System.err(950): </table>
12-05 12:17:22.396: W/System.err(950):
12-05 12:17:22.396: W/System.err(950): <br>
12-05 12:17:22.396: W/System.err(950):
12-05 12:17:22.396: W/System.err(950): <b> Source File: </b> C:\Websites\balajeebazaar\web.config<b> Line: </b> 32
12-05 12:17:22.396: W/System.err(950): <br><br>
12-05 12:17:22.396: W/System.err(950):
12-05 12:17:22.396: W/System.err(950): <hr width=100% size=1 color=silver>
12-05 12:17:22.407: W/System.err(950):
12-05 12:17:22.407: W/System.err(950): <b>Version Information:</b> Microsoft .NET Framework Version:2.0.50727.4963; ASP.NET Version:2.0.50727.4955
12-05 12:17:22.407: W/System.err(950):
12-05 12:17:22.407: W/System.err(950): </font>
12-05 12:17:22.407: W/System.err(950):
12-05 12:17:22.416: W/System.err(950): </body>
12-05 12:17:22.416: W/System.err(950): </html>
12-05 12:17:22.416: W/System.err(950): <!--
12-05 12:17:22.416: W/System.err(950): [ConfigurationErrorsException]: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. (C:\Websites\balajeebazaar\web.config line 32)
12-05 12:17:22.416: W/System.err(950): at System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags)
12-05 12:17:22.416: W/System.err(950): [HttpException]: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. (C:\Websites\balajeebazaar\web.config line 32)
12-05 12:17:22.416: W/System.err(950): at System.Web.HttpRuntime.FirstRequestInit(HttpContext context)
12-05 12:17:22.416: W/System.err(950): at System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)
12-05 12:17:22.416: W/System.err(950): at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
12-05 12:17:22.416: W/System.err(950): --><!--
12-05 12:17:22.426: W/System.err(950): This error page might contain sensitive information because ASP.NET is configured to show verbose error messages using <customErrors mode="Off"/>. Consider using <customErrors mode="On"/> or <customErrors mode="RemoteOnly"/> in production environments.-->
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): at org.json.JSONArray.<init>(JSONArray.java:104)
12-05 12:17:22.426: W/System.err(950): at org.json.JSONArray.<init>(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): at 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): at java.util.concurrent.FutureTask.run(FutureTask.java:122)
12-05 12:17:22.436: W/System.err(950): at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
12-05 12:17:22.436: W/System.err(950): at 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: thread exiting with uncaught exception (group=0x4001aa28)
12-05 12:17:22.446: E/AndroidRuntime(950): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception
12-05 12:17:22.446: E/AndroidRuntime(950): java.lang.RuntimeException: An error occured while executing doInBackground()
12-05 12:17:22.446: E/AndroidRuntime(950): at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-05 12:17:22.446: E/AndroidRuntime(950): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:234)
12-05 12:17:22.446: E/AndroidRuntime(950): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:258)
12-05 12:17:22.446: E/AndroidRuntime(950): at java.util.concurrent.FutureTask.run(FutureTask.java:122)
12-05 12:17:22.446: E/AndroidRuntime(950): at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
12-05 12:17:22.446: E/AndroidRuntime(950): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
12-05 12:17:22.446: E/AndroidRuntime(950): at java.lang.Thread.run(Thread.java:1060)
12-05 12:17:22.446: E/AndroidRuntime(950): Caused by: 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): at 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 more
SEE FOLLOWING CODE :
code segment where function is called to call webservice :
@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;
}
function to call webservice :
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;
}
see the line where i am comparing response code.Please guide me on how can i break my code there and show u a toast on ui