我试图模仿Java中这个curl命令的功能:
curl --basic --user username:password -d "" http://ipaddress/test/login
Run Code Online (Sandbox Code Playgroud)
我使用Commons HttpClient 3.0编写了以下内容但不知何故最终500 Internal Server Error从服务器获取了一个.有人能告诉我,如果我做错了吗?
public class HttpBasicAuth {
private static final String ENCODING = "UTF-8";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
HttpClient client = new HttpClient();
client.getState().setCredentials(
new AuthScope("ipaddress", 443, "realm"),
new UsernamePasswordCredentials("test1", "test1")
);
PostMethod post = new PostMethod(
"http://address/test/login");
post.setDoAuthentication( true );
try {
int status = client.executeMethod( post );
System.out.println(status + "\n" + …Run Code Online (Sandbox Code Playgroud) 我对 Oauth 很陌生,但需要学习如何在 Java 中执行此操作,以便我们可以对 REST 请求进行身份验证。这是我到目前为止所得到的。
经过一番阅读后,我决定尝试ScribeJava。我制作了一个自定义 API 来实现DefaultApi10a并指向我们的端点。我像这样设置服务:
final OAuth10aService service = new ServiceBuilder()
.apiKey("key")
.apiSecret("secret")
.build(TestApi.instance());
Run Code Online (Sandbox Code Playgroud)
这不起作用。经过大量挖掘后,似乎因为我们使用的是自签名证书,所以我无法访问远程主机。我收到一条错误消息,表示连接到远程服务时出现问题。ScribeJava 似乎没有办法禁用使用自签名证书的验证。
由于我们希望能够使用请求上的授权标头进行身份验证,因此我将如何使用 Java 库生成标头部分?我环顾四周,没有发现任何东西。
作为参考,我们已经使用 Python 成功进行了良好的 Oauth REST 调用,如下所示:
headeroauth = OAuth1(Oauth1Key, Oauth1Secret,
signature_type='auth_header')
myResponse = requests.get("endpoint_here", auth=headeroauth, verify=False)
Run Code Online (Sandbox Code Playgroud)
关于如何使用 Java 完成同样的事情有什么建议吗?