问题描述
在我的应用程序,我使用webservices.But当服务器已关闭或不活动状态下它给响应code 500和我的应用程序强制关闭读取数据。
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.
请指导我如何处理这种情况在我的application.The logcat的输出如下所示:
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
见下code:
code段,其中函数被调用来调用Web服务:
@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;
}
函数来调用Web服务:
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;
}
看到我的反应比较code.手电筒行指导我我如何能打破我的code存在,并显示UA烤面包上的用户界面
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
推荐答案
看到您发布的logcat的,我觉得你是获取一个JSON字符串作为响应。当你得到的回应你想你需要分析它。
After seeing the logcat you have posted, I feel you are fetching a JSON String as a response.When you get the response you want you will need to parse it.
所以,为了你是不是在你的code举行了事后,我帮你继续之后,您可以通过给我的下面的例子中得到您的回复:
So, in order that you are not held up afterwards in your code, I am helping you to continueafter you get your response by giving following example of mine:
在我的一个项目,我得到了从Web服务是响应:
In one of my projects the response I got from the web service was:
{checkrecord:[{rollno:ABC2,百分比:参加40:错过了12:34}],表1:[]}
为了解析我做了以下内容:
In order to parse I did the following:
JSONObject jsonobject = new JSONObject(result);
JSONArray array = jsonobject.getJSONArray("checkrecord");
int max = array.length();
for (int j = 0; j < max; j++)
{
JSONObject obj = array.getJSONObject(j);
JSONArray names = obj.names();
for (int k = 0; k < names.length(); k++)
{
String name = names.getString(k);
String value= obj.getString(name);
}
我的JSONObject看起来是这样的:
My JSONObject looks like this:
{表1:[],checkrecord:[{遗漏:34,出席:12,百分比:40,rollno:ABC2}]}
这是什么@gwa试图建议。我只是给了一个code样品给你。首先让您的结果,并确定它是否是有效的。
This is what the @gwa was trying to suggest. I just gave a code sample to you. Get your result first and determine whether it is valid.
希望它可以帮助
干杯
这篇关于在处理Android的服务器响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!