首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用android volley JsonObjectRequest从php获取字符串响应?

如何使用android volley JsonObjectRequest从php获取字符串响应?
EN

Stack Overflow用户
提问于 2018-05-15 15:26:57
回答 1查看 777关注 0票数 2

实际上,当我们调用API并以JSON格式发送请求时,我们期望响应也会以JSON格式出现。,但在这里,后端团队以字符串格式向我发送响应,因此我的onErrorResponse ()方法被调用。这里我的状态码是200。但是由于响应格式的原因,没有执行onResponse ()方法。你能帮我处理这件事吗?也许我必须在这里使用CustomRequest。如有任何建议,我们将不胜感激。谢谢

代码语言:javascript
复制
public class SampleJsonObjTask {
    public static ProgressDialog progress;
    private static RequestQueue queue;
    JSONObject main;
    JsonObjectRequest req;
    private MainActivity context;
    private String prd,us,ver,fha,ve,ves,sz,cat,pa,h,t,en,pha,pur,dip;
    public SampleJsonObjTask(MainActivity context, JSONObject main) {

        progress = new ProgressDialog(context);
        progress.setMessage("Loading...");
        progress.setCanceledOnTouchOutside(false);
        progress.setCancelable(false);
        progress.show();
        this.context = context;
        this.main = main;
         ResponseTask();
    }


    private void ResponseTask() {
        if (queue == null) {
            queue = Volley.newRequestQueue(context);
        }
        req = new JsonObjectRequest(Request.Method.POST, "", main,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        progress.dismiss();
                        Log.e("response","response--->"+response.toString());
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                progress.dismiss();//error.getMessage()
                /*back end team sending me response in String format therefore my onErrorResponse () method get called. Here my status code is 200.*/
            }

        })

        {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/json");
                return params;
            }
        };
        req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0, 1f));
        queue.add(req);

    }

}

这里的响应以字符串格式出现,即Value OK,

代码语言:javascript
复制
com.android.volley.ParseError: org.json.JSONException: Value OK of type java.lang.String cannot be converted to JSONObject
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50344562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档