Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从REST web服务中的curl命令获取参数_Java_Web Services_Curl_Parameters_Restful Authentication - Fatal编程技术网

Java 从REST web服务中的curl命令获取参数

Java 从REST web服务中的curl命令获取参数,java,web-services,curl,parameters,restful-authentication,Java,Web Services,Curl,Parameters,Restful Authentication,我想使用普通Java类从RESTWeb服务中的curl命令中获取用户名和密码。 我的java类是 @得到 公共响应检查(字符串用户名、字符串密码) { 证明…是真实的 } 我在jersey框架中使用Netbean IDE。我在POJOJava类中创建了web服务。 有人知道如何在web服务java类中获取用户名和密码吗? 我的curl命令类似于: curl-u username:password如果这是基于您的问题中的代码,那么获取用户名就是向资源添加一个新属性,该属性使用类型为@Context

我想使用普通Java类从RESTWeb服务中的curl命令中获取用户名和密码。 我的java类是

@得到 公共响应检查(字符串用户名、字符串密码) { 证明…是真实的 }

我在jersey框架中使用Netbean IDE。我在POJOJava类中创建了web服务。 有人知道如何在web服务java类中获取用户名和密码吗? 我的curl命令类似于:


curl-u username:password

如果这是基于您的问题中的代码,那么获取用户名就是向资源添加一个新属性,该属性使用类型为
@Context
的注释(我们称之为
securityContext
)。然后,您可以按如下方式访问用户名:

String username = securityContext.getUserPrincipal().getName();
但此API无法提供密码。只有当用户已经通过容器的身份验证时,这种方法才会起作用。要获取密码,属性的类型必须是(我们称之为httpHeaders)。使用此对象,您必须调用

String authHeader = httpHeaders.getRequestHeader("Authorization").get(0);
使用您列出的curl命令将默认为使用,在由username:password组成的base64编码字符串中为您提供用户名和密码。要获取这些值,您需要解析、base64解码,然后再次解析。您提供的curl命令将向请求添加以下标头:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
在我之前提供的代码片段中,
authHeader
将具有该值

Basic dXNlcm5hbWU6cGFzc3dvc.mQ=
获取用户名和密码是这样的

String[] pair = base64decode(authHeader.split(" ")[1]).split(":");
在该代码中,使用所选的base64解码库替换
base64解码
。在这次调用之后,用户名将在
对[0]
中,密码将在
对[1]
中。请注意,所有这些代码都缺少生产代码所需的null和边界检查以及异常处理。它还只支持基本身份验证。如果需要支持其他身份验证方法,则需要处理该方法所需的任何解码和解析

在我看来,JAX-RS更倾向于使用
SecurityContext
方法并依赖容器来验证请求,因此请理解使用
HttpHeaders
方法的所有注意事项