当前位置: 首页 > 知识库问答 >
问题:

java中rest API的身份验证失败错误

赵英哲
2023-03-14

我正在使用以下代码执行一些请求:

    DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getCredentialsProvider().setCredentials(
                new AuthScope("testrail.xyz.com", 80), 
                new UsernamePasswordCredentials("abc@xyz.com", "test123"));

    try {
      // specify the host, protocol, and port
      HttpHost target = new HttpHost("testrail.xyz.com", 80, "http");

      // specify the get request
      HttpGet getRequest = new HttpGet("/index.php?/api/v2/get_runs/52");
      getRequest.addHeader("Content-Type", "application/json;charset=UTF-8");

      System.out.println("executing request to " + target);

      HttpResponse httpResponse = httpclient.execute(target, getRequest);
      HttpEntity entity = httpResponse.getEntity();

      System.out.println("----------------------------------------");
      System.out.println(httpResponse.getStatusLine());
      Header[] headers = httpResponse.getAllHeaders();
      for (int i = 0; i < headers.length; i++) {
        System.out.println(headers[i]);
      }
      System.out.println("----------------------------------------");

      if (entity != null) {
        System.out.println(EntityUtils.toString(entity));
      }

我收到的答复是:

执行http://testrail.mypublisher.com:80请求

----------------------------------------

HTTP/1.1 401未授权日期:周三,11月4日2015 17:19:05GMT服务器:Apache X-Powerd-By:PHP/5.3.3 Content-Llong:87连接:关闭Content-Type:Application/json;charset=utf-8

----------------------------------------

{“error”:“身份验证失败:用户/密码或会话cookie无效或丢失。”}

我通过了身份验证的凭据,但仍然收到此错误。当我手动登录应用程序或通过Firefox Rest客户端触发上述请求时,它可以正常工作。我哪里出错了?我使用的是4.5.1 httpClient jar文件。

共有1个答案

姜飞飙
2023-03-14

尝试以下操作(来自Apache HTTPClient文档):

/**
 * A simple example that uses HttpClient to execute an HTTP request against
 * a target site that requires user authentication.
 */
public class ClientAuthentication {

    public static void main(String[] args) throws Exception {
        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(
                new AuthScope("httpbin.org", 80),
                new UsernamePasswordCredentials("user", "passwd"));
        CloseableHttpClient httpclient = HttpClients.custom()
                .setDefaultCredentialsProvider(credsProvider)
                .build();
        try {
            HttpGet httpget = new HttpGet("http://httpbin.org/basic-auth/user/passwd");

            System.out.println("Executing request " + httpget.getRequestLine());
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                System.out.println("----------------------------------------");
                System.out.println(response.getStatusLine());
                System.out.println(EntityUtils.toString(response.getEntity()));
            } finally {
                response.close();
            }
        } finally {
            httpclient.close();
        }
    }
}
 类似资料:
  • 问题内容: 我正在尝试通过FTP SITE代理访问FTP服务器以绕过防火墙,因为我知道我的用户名/密码正确,因为可以使用FileZilla进行连接。我尝试使用,但没有用。码: 给我这个错误: 我尝试过的事情: 使用备用构造函数。 拆下 使用just ,不使用FTPProxyConnector 设置连接器之前进行身份验证,反之亦然。 但是,当我仅使用Authenticator时,会收到不同的错误提示

  • 我的用户需要根据他的Git存储库验证他的私钥。它类似于任何DB客户端工具中的“测试连接”按钮。 我在Java使用JSCH进行此验证(我只需要使用SSH连接并告诉连接成功)。下面是我的Java代码 我得到以下例外。 我引用了所有其他SO论坛,给出的解决方案是在相应的服务器中添加公钥。我做到了这一点,并且能够使用SSH命令成功地进行身份验证(如下所述)。但我无法使用JSCH实现同样的效果。请帮忙

  • Tweepy API请求twitter return me Twitter错误响应:状态代码=401。 这是我的实际代码: 我曾试图用tweepy软件包删除推文,并获得了所有必需的密钥。镊子包装不起作用吗?有人能帮我解决这个问题吗。

  • 我有一个问题,通过mongo shell连接到MongoDB地图集,即使我已经做了一切正确的和三重检查数据用户名和密码,包括我的IP在白名单中,更改库名测试,并尝试在同一行中添加-密码 `$mongo“mongodbsrv://cluster******.mongodb。net/test”--用户名admin--密码admin MongoDB shell v4.4.6版连接到:mongodb://

  • http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.3.xsd“>

  • 我的keytab由以下命令生成: SPN信息 看起来我的keytab没问题。