代码之家  ›  专栏  ›  技术社区  ›  Skadoosh

无法在Java中对已认证的超分类作曲器REST服务器执行POST请求

  •  0
  • Skadoosh  · 技术社区  · 6 年前

    我无法向经过身份验证的composer rest服务器执行post请求。

    • 我一直在尝试使用hyperledger composer rest server 已启用身份验证和多用户。
    • 我已经通过导出启用了基于GitHub的身份验证 带钱包和 恒等式。
    • 我在GitHub中验证其余服务器,并 我可以休息 作曲家大摇大摆浏览器中的操作 .
    • 我还可以通过 带有访问标记的URL。 http://localhost:4200/api/Trader?access_token=xxxxxxxxxxx 这作品 邮差也一样。

    问题是 我无法用Java代码对作曲家REST URL进行POST请求 甚至在将访问令牌作为参数传递之后。我尝试过OkhttpClient、ApachehttpClient、java.net客户端、CloseablehttpClient。

    它给我的只是

    Server returned HTTP response code: 401
    

    在所有方法中,我都会得到一个“授权失败”错误。

    我不知道我是否遗漏了什么,因为我可以从邮递员那里做一个休息手术。我从邮递员本身获取代码格式,并将其粘贴到Java代码中,但仍然不起作用。我不知道我做错了什么,

    建议,代码片段?

    谢谢!

    2 回复  |  直到 6 年前
        1
  •  2
  •   Andrei Dragotoniu    6 年前

    既然你成功地从邮递员那里得到了这个消息,那么你显然在Java代码中丢失了一些东西。

    您可能拥有正确的URL,但可能缺少一个头部、JSON类型或类似的内容。

    检查你的邮递员请求并在Java代码中复制它,所有的东西,而不仅仅是URL。

    将您的请求记录下来,并将其与邮差请求进行比较,以确定两者之间的区别。

        2
  •  2
  •   Honey Shah    6 年前

    尝试此代码检索cookie:

    public void getCookieUsingCookieHandler() { 
    try {       
        // Instantiate CookieManager;
        // make sure to set CookiePolicy
        CookieManager manager = new CookieManager();
        manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
        CookieHandler.setDefault(manager);
    
        // get content from URLConnection;
        // cookies are set by web site
        URL url = new URL("http://host.example.com");
        URLConnection connection = url.openConnection();
        connection.getContent();
    
        // get cookies from underlying
        // CookieStore
        CookieStore cookieJar =  manager.getCookieStore();
        List <HttpCookie> cookies =
            cookieJar.getCookies();
        for (HttpCookie cookie : cookies) {
                if (cookie.getName().equalsIgnoreCase("access_token")) {
                    System.out.println("CookieHandler retrieved cookie: " + cookie.getValue());
                    break;
                }
    
            }
    } catch(Exception e) {
        System.out.println("Unable to get cookie using CookieHandler");
        e.printStackTrace();
    }
    

    }

    您可以从这里引用它: https://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/accessingCookies.html