我正在尝试与express (node.js)服务器(服务器也使用mongoose)通信Android客户端(使用volley )。请求的Android代码是
String url = "http://10.0.2.2:3000/tasks/";
CustomRequest myRequest = new CustomRequest(Request.Method.POST, url, params, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.i("ApP CreateActivity","Response Secussfully" );
Log.i("ApP CreateActivity", "HTTP REPONCE RECIEVED " + response.toString());
try {
JSONObject myCreditentials = response.getJSONObject(0);
Log.i("ApP CreateActivity", "SECUSSFUL LOGIN");
}
} catch (JSONException e) {
e.printStackTrace();
Log.i("ApP CreateActivity", "JSON EXCEPTION");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("ApP CreateActivity", "Error While Fetch Response --> network Error");
}
});
myRequest.setTag("createtask");
queue.add(myRequest);现在在服务器端有两个不同的代码。
version-1
router.post('/tasks/', function(req, res, next) {
Task.find(function (err, todos) {
if (err) return next(err);
console.log('------------------------------');
console.log('Find Works');
console.log('------------------------------');
res.json(todos);
});
version-2
router.post('/tasks/', function(req, res, next) {
var myTask = new Task();
// initialization --> myTask...
myTask.save( function (err, todos) {
if (err) return next(err);
res.json( todos );
console.log('------------------------------');
console.log('Create WOrks');
console.log('------------------------------');
});现在的问题是Android -->版本1(查找任务)运行得很好。例如,Android日志显示"SUCCESSFUL LOGIN“Android --> version-2(Create Task)给出错误,即调用onErrorResponce。日志显示“获取响应时出错”。
服务器输出版本-1: Fetch工作。(预期输出)。服务器输出版本2:创建工作。(数据正确添加到数据库中)。
发布于 2015-06-28 23:36:34
我解决了这个问题,如果你打印在errorResponce函数中传递的错误,它将显示这是一个JSON解析错误(版本2),而不是一些网络数组,响应应该是JSON- error.Actually,但它收到的是JSON-error.Actually。但这是一个错误,因此调用error-listener。因此,我将响应从JSON-OBJECT更改为JSON-ARRAY,问题就解决了。
myTask.save( function (err, todos) {
if (err) return next(err);
var myTaskArray = [];
myTaskArray.push(todos);
res.json( myTaskArray );
console.log('------------------------------');
console.log('Something WOrks');
console.log('------------------------------');
});这是可行的。
https://stackoverflow.com/questions/31095880
复制相似问题