【发布时间】:2017-09-02 12:35:49
【问题描述】:
当我使用 Postman 访问 URL 时,它可以正常工作,但通过 Android 我收到 401 错误:
04-07 03:53:26.920 850-1142/system_process I/ActivityManager: START u0 {cmp=vems.visioneering.com.vems/.utils.ProfileActivity} from uid 10061 on display 0
04-07 03:53:26.957 26244-26244/vems.visioneering.com.vems V/Action ID: http://192.168.16.2:8081/VEMS/rest/ajax/getProfileObj
04-07 03:53:26.962 26244-26273/vems.visioneering.com.vems W/DefaultRequestDirector: Authentication error: Unable to respond to any of these challenges: {}
04-07 03:53:26.962 26244-26273/vems.visioneering.com.vems V/httpResponse: org.apache.http.message.BasicHttpResponse@83d69b6
04-07 03:53:26.962 26244-26273/vems.visioneering.com.vems V/Status code: 401
04-07 03:53:26.963 26244-26244/vems.visioneering.com.vems D/AndroidRuntime: Shutting down VM
我的代码是:
try {
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
HttpPost httpPost = new HttpPost(params[1]);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
StringEntity entity = new StringEntity(params[0]);
httpPost.setEntity(entity);
HttpResponse httpResponse = client.execute(httpPost);
Log.v("httpResponse ",httpResponse.toString());
int statusCode = httpResponse.getStatusLine().getStatusCode();
Log.v("Status code", String.valueOf(statusCode));
if (statusCode == HttpURLConnection.HTTP_OK ||
statusCode == HttpURLConnection.HTTP_CREATED) {
HttpEntity httpEntity = httpResponse.getEntity();
response=EntityUtils.toString(httpEntity);
Log.v("RESPONSE SERVER COMM : ",response);
return response;
}
} catch (Exception e){
// ...
}
我该如何解决这个问题?
【问题讨论】:
-
你查过401是什么意思吗?
-
是的,我查了一下..它成功登录但没有点击这个 URL
-
您能分享一下您在邮递员中使用的请求吗?您没有在代码中设置任何用户/凭据参数,并且由于您获得了 401,因此您可能错过了这一点。 (http.401 == 未经授权)
标签: android ajax rest http-post unauthorized