具有基本安全性的REST Web服务的Android客户端

5
我已经写了一个基于基本认证的简单RESTful Web服务。我使用了这个页面secureRestWS上提供的技巧。他们还创建了一个视频,并在YouTube上发布了更详细的信息。当您在浏览器中打开时,它可以正常工作。您需要在授权窗口中编写用户名和密码。
我还发现了一个带有Android客户端的页面,该客户端使用httpclient调用rest web服务,如果Web服务没有进行身份验证,则可以正常工作。我使用了这个示例androidRestWSClient。但是我不知道如何在这种情况下添加用户名和密码,我尝试了以下方式:
client.AddParam("User Name", "myusername");
client.AddParam("Password", "mypassword");

或者在头部:
client.AddHeader("User Name", "myusername");
client.AddHeader("Password", "mypassword");

但是什么都不起作用。我还尝试创建一个URL,像这样告诉Web服务用户名和密码:
http://192.168.1.42/RestWS/resources/helloWorld?username=myusername&password=mypassword

我实在没有解决这个问题的方法,所以如果有人有客户端示例,请告知我。

在Web服务中,我有一个简单的GET方法。

@GET
@Path("/text")
public String getText() {
    return "Hello World!";
}

我需要使用SecurityContext来处理用户名和密码吗?手动创建身份认证是否更好,例如此示例:

http://aruld.info/accessing-restful-services-configured-with-ssl-using-resttemplate/

感谢您的帮助
1个回答

12
如果您只使用基本的 HTTP 身份验证,则 URL 应如下所示:
http://username:password@192.168.1.42/RestWS/resources/helloWorld

好的,这是您要的:

HttpGet httpget;
try{
    httpget = new HttpGet(url); 

    String auth =new String(Base64.encode(( username + ":" + password).getBytes(),Base64.URL_SAFE|Base64.NO_WRAP));
    httpget.addHeader("Authorization", "Basic " + auth);
    }

对于创建URL,这对我很有用,所以谢谢,也许有人会回答第一个问题如何在客户端中添加用户名和密码,或者我只会在客户端中使用链接...谢谢。 - janilemy
这对我来说很好用,我在其他页面上找到了它,但是8小时内无法回答自己的问题...但现在一切都很好,感谢Kaediil的帮助... - janilemy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接