我尝试在此方法中调用rest服务并返回以下错误:
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon: beacons) {
logToDisplay( "ok, detectou beacons" );
RequestParams params = new RequestParams();
params.put("beaconId", "gass76382hshsfk");
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://192.168.1.130:8080/BeaconServer/palestra/listarPalestras", params, new AsyncHttpResponseHandler() {
// When the response returned by REST has Http response code '200'
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] response) {
try {
String respString = new String(response, "UTF-8");
JSONObject obj = new JSONObject(respString);
JSONArray jsonArray = obj.getJSONArray("palestra");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String nomePalestrante = jsonObject.getString("nomePalestrante");
String assuntoPalestra = jsonObject.getString("assuntoPalestra");
String beaconId = jsonObject.getString("beaconId");
logToDisplay(nomePalestrante + "\r\n" + assuntoPalestra + "\r\n" + beaconId + "\r\n");
//string+"\r\n";
}
} catch (JSONException e) {
// TODO Auto-generated catch block
logToDisplay("JSONException e");
Toast.makeText(getApplicationContext(),
"Error Occured [Server's JSON response might be invalid]!",
Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// erro ao converter o array de bytes json para String
e.printStackTrace();
}
}
// When the response returned by REST has Http response code other than '200'
@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
// Hide Progress Dialog
// When Http response code is '404'
if (statusCode == 404) {
logToDisplay("404 " + errorResponse.toString());
Toast.makeText(getApplicationContext(),
"Requested resource not found",
Toast.LENGTH_LONG).show();
}
// When Http response code is '500'
else if (statusCode == 500) {
logToDisplay("500 " + errorResponse.toString());
Toast.makeText(getApplicationContext(),
"Something went wrong at server end",
Toast.LENGTH_LONG).show();
}
// When Http response code other than 404, 500
else {
logToDisplay("outros " + errorResponse.toString());
Toast.makeText(getApplicationContext(),
"Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]",
Toast.LENGTH_LONG).show();
}
}
});
}
}
显示以下错误,不知道还能做什么
03-29 21:04:16.034:D / BluetoothAdapter(10437):stopLeScan()
03-29 21:04:16.043:D / BluetoothAdapter(10437):startLeScan():null
03-29 21:04:16.051:D / BluetoothAdapter(10437):onClientRegistered() - status = 0 clientIf = 5
03-29 21:04:16.322:W / dalvikvm(10437):threadid = 15:线程退出未捕获异常(组= 0x416f9d40)
03-29 21:04:17.185:D / BluetoothAdapter(10437):stopLeScan()
03-29 21:04:17.195:D / BluetoothAdapter(10437):startLeScan():null
03-29 21:04:17.202:D / BluetoothAdapter(10437):onClientRegistered() - status = 0 clientIf = 5
03-29 21:04:18.332:D / BluetoothAdapter(10437):stopLeScan()
03-29 21:04:18.340:D / BluetoothAdapter(10437):startLeScan():null
03-29 21:04:18.347:D / BluetoothAdapter(10437):onClientRegistered() - status = 0 clientIf = 5
03-29 21:04:19.467:D / BluetoothAdapter(10437):stopLeScan()
03-29 21:04:19.476:D / BluetoothAdapter(10437):startLeScan():null
03-29 21:04:19.485:D / BluetoothAdapter(10437):onClientRegistered() - status = 0 clientIf = 5
03-29 21:04:20.618:D / BluetoothAdapter(10437):stopLeScan()
03-29 21:04:20.627:D / BluetoothAdapter(10437):startLeScan():null
03-29 21:04:20.633:D / BluetoothAdapter(10437):onClientRegistered() - status = 0 clientIf = 5
03-29 21:04:21.476:E / AndroidRuntime(10437):致命异常:IntentService [BeaconIntentProcessor]
03-29 21:04:21.476:E / AndroidRuntime(10437):处理:org.altbeacon.beaconreference,PID:10437
03-29 21:04:21.476:E / AndroidRuntime(10437):java.lang.NullPointerException
03-29 21:04:21.476:E / AndroidRuntime(10437):at org.altbeacon.beaconreference.MonitoringActivity $ 4.onFailure(MonitoringActivity.java:199)
03-29 21:04:21.476:E / AndroidRuntime(10437):at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:319)
03-29 21:04:21.476:E / AndroidRuntime(10437):at com.loopj.android.http.AsyncHttpResponseHandler $ ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:138)
03-29 21:04:21.476:E / AndroidRuntime(10437):在android.os.Handler.dispatchMessage(Handler.java:102)
03-29 21:04:21.476:E / AndroidRuntime(10437):在android.os.Looper.loop(Looper.java:136)
03-29 21:04:21.476:E / AndroidRuntime(10437):在android.os.HandlerThread.run(HandlerThread.java:61)
03-29 21:04:21.784:D / BluetoothAdapter(10437):stopLeScan()
答案 0 :(得分:0)
由于我不知道哪一行代码在第199行,我只能猜到是什么给你一个NPE。我检查了你的代码。很可能你从REST得到一个null错误响应,它给你一个NPE。由于onFailure
方法没有任何内容,errorResponse.toString()
,这应该是问题所在。
您可以创建如下所示的变量,并在任何您喜欢的地方使用它,您应该将"not known"
更改为对您更有意义的其他内容。
String errorText = errorResponse != null ? errorResponse.toString() : "not known";