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

截击身体400错误

燕博文
2023-03-14

我想向服务器发送一篇帖子,帖子的正文是真是假。我有这个代码,我使用截击库

ShoozyHeader()将内容类型设置为text/plain,并将Accept设置为text/plain以及身份验证所需的其他标头。

如果我尝试http://requestmaker.com/,服务器正确响应,但我运行此代码,服务器响应:

错误的请求-无效的头HTTP错误400。请求的标头名称无效。

如果删除getBody(),服务器响应良好。

    final String url = POSTS_URI + idPost + "/likes";

    StringRequest strReq = new StringRequest(Request.Method.POST,
            url, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, response);
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            Toast.makeText(act, "Network error", Toast.LENGTH_SHORT).show();
        }
    }
    ) {
        @Override
        public byte[] getBody() throws AuthFailureError {
            return "true".getBytes();
        }
    };

共有2个答案

公冶才
2023-03-14

您是否在扩展请求的类中重写了GetHeader?

以下是如何:

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
    return headers != null ? headers : super.getHeaders();
}

下面是设置Base64(用户名、密码)头的示例:

@Override
    private HashMap<String, String> getHeaders() {
        HashMap<String, String> headers = new HashMap<>();
        headers.put("Authorization", getAuthentication("usernameExample", "passwordExample"));
        headers.put("Content-Type", "application/json; charset=utf-8");
        Log.d(TAG + "");
        return headers;
    }

private String getAuthentication(String username, String password) {
        String credentials = String.format("%s:%s", username, password);
        String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);
        return auth;
    }
公西嘉玉
2023-03-14

试试这个,它对我很管用:

JSONObject params = new JSONObject();

try {
    params.put("likes", "true");

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
//

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        url, params,
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
            }
        }) {

    /**
     * Passing some request headers
     * */
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json; charset=utf-8");
        return headers;
    }

};
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(60000,
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

// Adding request to request queue
getRequestQueue(jsonObjReq);
 类似资料:
  • 我正在尝试使用Volley库与我的RESTful API通信。 当我要持票人代币时,我必须在身体里贴上绳子。字符串应如下所示:grant_type=password 有关WebApi个人帐户的更多信息:http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api 不幸的是,我不知道如何解决它... 我正在尝试

  • 我正在尝试使用Volley获取JSON对象以创建动态自动完成,但在使用Volley请求时,我在日志cat中看到: 截击:[486]基本网络。logSlowRequests:请求的HTTP响应= 这些答案并没有解决我的问题。 这里是初始化请求队列的Singleton类: 发出请求的方法: 下面是HTTP Connector类:

  • 我正在尝试在Android上进行改装,以获得完整的PDF。但目前要得到回应还不完全。 由于HttpLoggingInterceptor,我得到了很多日志: 在我自己的日志上,我只得到了这个: 这是前面显示的日志的第一部分。 有什么想法吗?我被绊倒了。

  • 我想从URL获取一些数据,但服务器速度非常慢。。。因此,每当我使用凌空截击获取数据时,我都会得到TimeOurError,在服务器速度较慢的情况下,我是否可以处理凌空截击应该尝试获取数据多长时间。。。它只需要很少的时间,我也希望不断运行这个请求来检查数据,我计划使用计时器来完成它。。。可以使用计时器连续检查数据吗? 这是我现在的截击请求。。。它适用于其他URL 我需要连续调用这些函数(在应用程序内

  • 我在用Retrofit2。发送一个带有主体的POST请求(作为JSON数组),但得到的是“400 Bad request”。同时,从SoapUI和我的http客户机(基于HttpURLConnection)发送请求也很好。 响应的内容类型是text/plain,但应该是application/json 例如,使用SOAPUI的请求/响应:请求: 及其回应: null 这是服务器endpoint:

  • 当我已经安装模块Volley在android工作室我收到错误: 错误:配置项目“:volley”时出现问题。在C:\Users\egen\AppData\Local\android\sdk Open android sdk Manager中找不到哈希字符串为“android-22”的目标 我已经安装了Android支持库这里怎么了? 编辑 现在我收到了错误: 错误:(10,1)在计算根项目Fysi