Android 中的 HTTP 请求 header 问题
HTTP Request header issue in Android
我正在尝试触发一个 API,我需要在其中添加两个 header,即令牌和设备 ID。下面是我添加 header:
的代码
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:未找到
当我用任何字母数字值替换令牌时,我收到了带有错误消息的响应。但是当我传递上面提到的实际令牌值时,我遇到了异常。即使我也尝试使用 addHeader 函数,但遇到了同样的问题。我无法理解如何解决此错误。
这是导致错误的处理程序。不要使用。
您应该编写自己的处理程序或在没有处理程序的情况下调用执行。
httpClient.execute(httpPost);//remove the handler
希望对您有所帮助。谢谢
您的令牌似乎不正确。 Header HTTP 协议中的设置有其自身的限制。要检查它,只需尝试发送您的 trim 令牌(例如 30 个字符)。
如果没有帮助,则您的另一个参数不正确。无论如何,我会给你建议,使用 Retrofit.
我正在尝试触发一个 API,我需要在其中添加两个 header,即令牌和设备 ID。下面是我添加 header:
的代码 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:未找到
当我用任何字母数字值替换令牌时,我收到了带有错误消息的响应。但是当我传递上面提到的实际令牌值时,我遇到了异常。即使我也尝试使用 addHeader 函数,但遇到了同样的问题。我无法理解如何解决此错误。
这是导致错误的处理程序。不要使用。 您应该编写自己的处理程序或在没有处理程序的情况下调用执行。
httpClient.execute(httpPost);//remove the handler
希望对您有所帮助。谢谢
您的令牌似乎不正确。 Header HTTP 协议中的设置有其自身的限制。要检查它,只需尝试发送您的 trim 令牌(例如 30 个字符)。
如果没有帮助,则您的另一个参数不正确。无论如何,我会给你建议,使用 Retrofit.