" 401未经授权"在Android中执行http post(克隆自curl命令)时出错

时间:2011-03-05 05:43:18

标签: android http post curl login

我知道我不是第一个,但我确实搜索过并没有找到解决方案。 首先,我需要做到这一点:

curl -user1:pass1 - X POST -d"data" http://www.mysite.com/pushes.xml

但是我不想使用curl lib来提供这么简单的请求,因为我认为解决方案必须简单易行。我发现了这个http login example,并尝试将其与

一起使用
    nvps.add(new BasicNameValuePair("username", "user1"));
    nvps.add(new BasicNameValuePair("password", "pass1"));

但我认为标签“用户名”和“密码”是错误的...我只是无法得到它们......所以我问你帮忙。请帮助我了解我需要做什么才能获得此登录信息。谢谢将保证:)

P.S。在响应中我得到消息“HTTP Basic:访问被拒绝”。但curl命令工作正常......

2 个答案:

答案 0 :(得分:0)

检查您正在使用的API。我有类似的问题,直到我检查它,它是“用户”,而不是“用户名” 所以改变nvps.add(new BasicNameValuePair("username", "user1"));
nvps.add(new BasicNameValuePair("user", "user1"));并尝试一下。

答案 1 :(得分:0)

如果服务器返回401,则需要通过特殊身份验证器或标头参数传递凭证:

    httpPost.addHeader(RestHelper.AUTHORIZATION_HEADER, RestHelper.AUTHORIZATION_HEADER_VALUE);

where 

    AUTHORIZATION_HEADER_VALUE = "Basic " + Base64Encoder.encode ("user:password");
    AUTHORIZATION_HEADER = "Authorization";

    httpClient.getCredentialsProvider().setCredentials(
            new AuthScope("server.com", 443, AuthScope.ANY_SCHEME),
            new UsernamePasswordCredentials(LOGIN_VALUE, PASSWORD));