通过Android发出POST请求时的代码401

时间:2017-04-07 08:01:12

标签: android ajax rest http-post unauthorized

当我使用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){
// ...
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

用户会话管理还需要以下标题:

httpPost.setHeader("Your code", "Your code");

答案 1 :(得分:0)

状态码401表示未经授权。它应该与之有关, 1.证书 2.登录凭据 3.访问令牌