2017-04-06 126 views
2

我想从数据库中获取用户的信息,并显示它,但我不断收到此错误:Android的凌空:BasicNetwork.performRequest:意外的响应代码404

BasicNetwork.performRequest: Unexpected response code 404

这里是我的javacode:

装方法:

public void loadUserProfile() { 

    Response.Listener<String> responseListener = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       idTV.setText(jsonResponse.getString("_id")); 
       nameTV.setText(jsonResponse.getString("name")); 
       firstNameTV.setText(jsonResponse.getString("firstName")); 
       emailTV.setText(jsonResponse.getString("email")); 
       sexTV.setText(jsonResponse.getString("sex")); 
       yearTV.setText(jsonResponse.getString("year")); 
       cursusTV.setText(jsonResponse.getString("cursus")); 
      } catch (JSONException e) { 
       onLoadProfileFail(); 
      } 
     } 
    }; 
    ProfileRequest profileRequest = new ProfileRequest(user_id, responseListener); 
    RequestQueue queue = Volley.newRequestQueue(ProfileActivity.this); 
    queue.add(profileRequest); 
} 

Request类

class ProfileRequest extends StringRequest { 
    private static final String USER_PROFILE_REQUEST = "http://[ipaddress]:8080/users/:id"; 
    private Map<String, String> params; 

    public ProfileRequest(String id, Response.Listener<String> listener) { 
     super(Method.POST, USER_PROFILE_REQUEST, listener, null); 
     params = new HashMap<>(); 
     params.put("id", id); 
    } 

    @Override 
    public Map<String, String> getParams() { 
     return params; 
    } 
} 

app.js

router.get('/users/:id', function(req, res) { 
    User.find({ _id: "ie00847" }, function(err, user) { 
     if (err) 
      res.send(err); 
     res.json(user); 
    }); 
}); 

回答

0

你得到了404错误,因为你所访问一个方法(POST)的路由不可用,因为在app.js文件您的GET请求定义的函数,而而不是POST请求,因此您需要将Android代码更新为GET请求。像下面,

class ProfileRequest extends StringRequest { 
    private static final String USER_PROFILE_REQUEST = "http://[ipaddress]:8080/users"; 
    private Map<String, String> params; 

    public ProfileRequest(String id, Response.Listener<String> listener) { 
     super(Method.GET, USER_PROFILE_REQUEST + "/" + id, listener, null); 
    } 
} 

另外请注意,没有必要重写getParams()方法,你不发送POST请求了。另外,除了通过硬编码URL中的值而不通过Map对象之外,您不能将参数添加到GET请求。

希望这会有所帮助:)

相关问题