相关疑难解决方法(0)

使用HttpClient在Java中进行Http基本身份验证?

我试图模仿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)

java http apache-commons

147
推荐指数
8
解决办法
40万
查看次数

生成Oauth1.0a签名的Java库

我对 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 完成同样的事情有什么建议吗?

java oauth scribe apache-httpclient-4.x

2
推荐指数
1
解决办法
5184
查看次数