我使用基本身份验证编写了一个简单的RESTful Web服务。我使用此页面中的提示secureRestWS。他们还创建了一个视频,并在youtube上发布了更多细节。在浏览器中打开它时,它可以正常工作。您需要在授权窗口中写入用户名和密码。
我还找到了一个带有android客户端的页面,该页面使用httpclient调用其余的web服务,如果web服务没有认证,则可以正常工作。我正在使用此示例androidRestWSClient。但我不知道如何在这种情况下添加用户名和密码,我试过:
client.AddParam("User Name", "myusername");
client.AddParam("Password", "mypassword");
或标题:
client.AddHeader("User Name", "myusername");
client.AddHeader("Password", "mypassword");
但没有任何作用。我还尝试创建告诉Web服务用户名和密码的URL,如:
http://192.168.1.42/RestWS/resources/helloWorld?username=myusername&password=mypassword
我真的没有这方面的解决方案,所以如果有人有一个示例客户,我会很感激。
在webservice中我有简单的GET方法
@GET
@Path("/text")
public String getText() {
return "Hello World!";
}
我是否需要使用SecurityContext作为用户名和密码?如下例所示,创建身份验证更好:
http://aruld.info/accessing-restful-services-configured-with-ssl-using-resttemplate/
感谢您的帮助
答案 0 :(得分:11)
如果您只使用基本的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);
}