我正在对旧项目进行更新,到目前为止,我对Android的了解不多。在项目中,我们有关于产品的评论部分。
对于较早发送后的评论,我们返回0(某些错误)和1(成功)。
下面是我们正在使用的代码。
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Method.POST, act.getString(R.string.CommentForUserURL), null, new Response.Listener<JSONObject>() { @Override public void onResponse( JSONObject response) { Log.d("response done", "done===" + response); mloading.setVisibility(View.GONE); if (response != null) { Comment obj = new Comment(); JSONObject jsonObject = response; try { obj.setComment(jsonObject .getString("Comment"));
现在,我们将返回对象从0/1更改为用户对象。
是否需要将JsonObjectRequest更新为GJSON请求?否则对象也会被JsonObjectRequest解析?
我问是因为当我在上面执行时,出现如下错误。
01-25 12:30:21.754: E/Volley(16487): [10114] BasicNetwork.performRequest: Unexpected response code 500 for http://new.souqalharim.com/add/CommentForMerchant
知道为什么我会收到此错误吗?
注意:此URL适用于iPhone应用程序。
这是post方法,因此不存在完整的url。还有几个要添加的参数,例如?comment = MyComment&userId = 123&productId= 234。由于是发布,所以我没有在实际的URL中添加参数。
我有其他方法
@Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<String, String>(); params.put("productId", productId.toString()); params.put("userId", mSessionManager.getUserCode().toString()); params.put("comment", GlobalFunctions .EncodeParameter(med_comments .getText().toString())); return params; }
完整网址如下。
http://new.souqalharim.com/add/CommentForUser?productId=325&userId=5&comment=abcd
我在Mozilla RESTClient中对此进行了测试,并且效果很好。
经过进一步检查后,我发现protected Map<String, String> getParams() throws AuthFailureError {没有接到电话。知道为什么会这样吗?
protected Map<String, String> getParams() throws AuthFailureError {
问题在下面。
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Method.POST, act.getString(R.string.CommentForUserURL), null, new Response.Listener<JSONObject>() { ^^^^
它应该是
final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Method.POST, act.getString(R.string.CommentForUserURL), new JSONObject(params), new Response.Listener<JSONObject>() { ^^^^^^^^^^^^^^^^^^^^^^
从protected Map<String, String> getParams()之前复制代码final JsonObjectRequest。
protected Map<String, String> getParams()
final JsonObjectRequest
而已!!!
原因如下。
该 JsonObjectRequest 扩展JsonRequest其覆盖getBody()方法直接,让你的 getParam()不只 永远不会调用,我建议您扩展 StringRequest 代替JsonObjectRequest。
getBody()