Android中的HTTP请求标头问题

时间:2016-03-29 12:38:38

标签: android rest http-headers

我正在尝试触发一个API,我需要在其中添加两个标头,即token和deviceid。下面是我添加标题的代码:

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(nameValuePairs[0].get(0).getValue().toString());
        nameValuePairs[0].remove(0);

        ResponseHandler<String> res = new BasicResponseHandler();

        // set header

        httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
        httpPost.setHeader("deviceid", "358978060711939");
        httpPost.setHeader("token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJHVUlEIjoiYjdlNjZiOWQtMjBjNy00MGI2LTliMzgtOTc3OGQ2OWIwM2E1IiwiRU5USVRZIjoiRUFCTSIsIlVOSVQiOiJVQk0yIiwiUk9MRU5BTUUiOiJTRUxGIiwiSUQiOiIwMDAyMzciLCJBTFRJRCI6IjMzMyIsIlVTRVJfTkFNRSI6IkFuaWwiLCJMT0dJTl9HVUlEX0tFWSI6ImU2NWM2YWEzLTZlNDItNDUyYS1hOGEwLWRlYzRhMGRiNTIxNyIsImlhdCI6MTQ1OTI0ODkyM30.m742d9xd6XlBBjZ3_ODWuoCEdWvSkhPAuNrDee1vi74");

        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs[0]));
        response = httpClient.execute(httpPost, res);

在响应中我得到: org.apache.http.client.HttpResponseException:Not Found

当我用任何字母数字值替换令牌时,我收到错误消息的响应。但是当我通过上面提到的实际令牌值时,我得到了异常。即使我尝试使用addHeader功能,但同样的问题。我无法理解如何解决此错误。

2 个答案:

答案 0 :(得分:1)

它是导致错误的处理程序。不要使用。 您应该编写自己的处理程序,或者在没有处理程序的情况下调用execute。

 httpClient.execute(httpPost);//remove the handler

我希望这会有所帮助。 THANKYOU

答案 1 :(得分:0)

您的令牌似乎不正确。 HTTP协议中设置的标头有自己的限制。要检查它,只需尝试发送修剪标记(ex 30 chars)。

如果没有帮助,则您的其他参数不正确。无论如何,我会给你建议,使用Retrofit