当前位置: 首页 > 知识库问答 >
问题:

获得一个帖子的HTTP正文响应

缪宪
2023-03-14

我试图在我的应用程序中获取一些数据,并通过使用带有截击的HTTP POST请求向用户显示。我的问题是,我不知道如何获得服务器主体对请求的响应。在下面的代码中,响应总是“200”,这是HTTP状态代码。

如何提取身体反应并作为字符串进行管理?

 RequestQueue requestQueue = Volley.newRequestQueue(this);
    final String requestBody = Utility.toCorrectCase(req);
    //Decommentare solo per il debug
    //Toast.makeText(getBaseContext(),requestBody, Toast.LENGTH_SHORT).show();
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.i("VOLLEY", response);
            Bitmap myBitmap = QRCode.from(response).bitmap();
            qrcode.setImageBitmap(myBitmap);
            ViewGroup.LayoutParams params = qrcode.getLayoutParams();
            params.width =  qrDisplayedSize;
            params.height = qrDisplayedSize;
            qrcode.setLayoutParams(params);
            loadingText.setText(getString(R.string.prod_id_desc).concat(response));
            qrcode.setVisibility(View.VISIBLE);
            backButton.setVisibility(View.VISIBLE);
            progressBar.setVisibility(View.INVISIBLE);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("VOLLEY", error.toString());
            new SweetAlertDialog(getApplicationContext(), SweetAlertDialog.ERROR_TYPE)
                    .setTitleText("Errore comunicazione server")
                    .setContentText("Qualcosa non ha funzionato!\nDescrizione errore:".concat(error.toString()))
                    .show();
            finish();
        }
    }) {
        @Override
        public String getBodyContentType() {
            return "application/x-www-form-urlencoded; charset=utf-8";
        }

        @Override
        public byte[] getBody() throws AuthFailureError {
            try {
                return requestBody == null ? null : requestBody.getBytes("utf-8");
            } catch (UnsupportedEncodingException uee) {
                VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                return null;
            }
        }

        @Override
        protected Response<String> parseNetworkResponse(NetworkResponse response) {
            String responseString;
            responseString = String.valueOf(response.statusCode);

            return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
        }
    };
    requestQueue.add(stringRequest);

共有2个答案

郭琦
2023-03-14

改变这个对我有用

@Override
    protected Response < String > parseNetworkResponse(NetworkResponse response) {

     String parsed;
     try {
      parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
     } catch (UnsupportedEncodingException e) {
      parsed = new String(response.data);
     }
     return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));

    }
洪景铄
2023-03-14

经过几天的搜索,我发现我没有正确覆盖网络响应。所以对于每个和我有同样困扰的人,我的问题的答案是:parseNetworkResponse必须被覆盖,以最简单的方式获得响应体。

            @Override
        protected Response<String> parseNetworkResponse(NetworkResponse response) {

            if(response.statusCode==400){
                new SweetAlertDialog(getApplicationContext(), SweetAlertDialog.ERROR_TYPE)
                        .setTitleText("Errore comunicazione server")
                        .setContentText("Qualcosa non ha funzionato!\nCodice errore:"+response.statusCode)
                        .show();
                finish();
            }
            return super.parseNetworkResponse(response);
        }
 类似资料:
  • 是否有任何选项可以为WordPress单帖和帖子列表获得不同类型的响应?我的帖子目标列表响应为 对于单个帖子响应,如 注意:使用register_rest_field()和rest_ prepare_post过滤器,我们可以修改这两个帖子的响应(单个和多个帖子),但我们需要单独的响应。 运筹学 在register_rest_field()的get_callback函数中,有任何选项可以知道请求是针

  • 我有这些桌子; 我试图抓取所有的帖子,由用户正在关注的用户和用户自己的帖子。 我试过了 但问题是,我无法从这个查询中获取用户的帖子。我用or_where etc尝试了其他方法,我能够获得用户的帖子,只是数据增加了三倍:(有人能帮我一下吗?非常感谢。 哦,在普通的Mysql中,它;

  • 我有以下代码: 如果我提供的所有参数都正确-enpoint会像邮递员应用程序一样返回200个http stsatus代码。 但是如果我提供了错误的url-我看到异常: 但是当我以同样的方式在postman中修改url时——我看到404错误: 我想有像邮递员一样的回应和像邮递员一样的回应。 如果我提供而不是,我会得到正确的,我可以在其中提取我想要的数据: 如何编写将提取和的通用代码? 重新模板初始化

  • 问题内容: 使用Zuul作为过滤器的代理时,如何读取响应正文? 我试图像这样调用代码: 问题答案: 我设法克服了这一点。该解决方案包括4个步骤: 读入ByteArrayOutputStream 将OutputStream复制到2 InputStreams。 使用其中之一进行自定义。 使用第二个重新分配上下文: 从点1读取流将导致无法再次读取该流,因此,您将传递尚未读取的新的新鲜流

  • 问题内容: 我刚刚开始学习Angular.js。如何在Angular.js中重新编写以下代码? 到目前为止,这是我的- html 我的方向正确吗? 问题答案: 在当前函数中,如果要分配给一个promise对象,则返回一个promise对象。 因此,除了分配给$ http之外,您还应该在成功的内部分配,如下所述:

  • 我正在建立一个社交网络,在那里,用户将拥有一个类似推特的流,记录他们关注的人的所有帖子。 什么是最好的方式来查询这个与Laravel雄辩? 我有三张桌子