程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误?

开发过程中遇到即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误的问题如何解决?下面主要结合日常开发的经验,给出你关于即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误的解决方法建议,希望对你解决即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误有所启发或帮助;

以下是正在触发的包装器 API 代码:-

logger.info("InsIDe Method");
    String integrationUrl=null;
    String integrationUsername = null;
    String integrationpassword = null;
    
        if(StringUtils.isnotBlank(System.getenv("PushGDSDataUrl")))
            integrationUrl = System.getenv("PushGDSDataUrl");
        else
            integrationUrl = "@R_944_10107@s://test.connect.boomi.com/ws/simple/createCommentsx-test";
        
        if(StringUtils.isnotBlank(System.getenv("PushGDSDataUrlUsername")))
            integrationUsername = System.getenv("PushGDSDataUrlUsername");
        else
            integrationUsername = "<integration-username>";
                                   
        
        if(StringUtils.isnotBlank(System.getenv("PushGDSDataUrlPwd")))
            integrationpassword = System.getenv("PushGDSDataUrlPwd");
        else
            integrationpassword = "<integration-password>";
                                   
    
    RestTemplate restTemplate = new RestTemplate();
    @R_944_10107@headers headers = new @R_944_10107@headers();
    headers.setContentType(MediaType.APPliCATION_JsON);
   // headers.set("dcuID",integrationUserName);
    //headers.set("dcpwd",integrationpassword);
  //  headers.set("Content-Type","application/Json");
    
    String auth = integrationUsername + ":" + integrationpassword;
    byte[] encodedAuth = Base64.encodeBase64( 
       auth.getBytes(Charset.forname("US-ASCII")) );
    String authheader = "Basic " + new String( encodedAuth );
    headers.set( "Authorization",authheader );
   // headers.set("Body","{\r\n\"class_name\":\"Server\",\r\n\"company_name:\"ABC\"\r\n}\r\n");
    
    
    GDSPushData newObj = new GDSPushData();
    newObj.setClass_name(className);
    newObj.setCompany_name(companyName);
    
    String Jsoninstring = new Gson().toJson(newObj);
    JsONObject mJsONObject = new JsONObject(Jsoninstring);
    logger.info("request is set");
    
    



    @R_944_10107@entity<String> entityReq = new @R_944_10107@entity<String>(mJsONObject.toString(),headers);
    
    logger.info("request is converted");
    
    
        
         URI targetUrl = UriComponentsBuilder.fromUriString(integrationUrl).build().encode().toUri(); //Build base url
            
            
            logger.info("target Url"+targetUrl);
            
          
            
            ResponseEntity<String> result = restTemplate.exchange(integrationUrl,@R_944_10107@method.POST,entityReq,String.class);
            
            //String result = restTemplate.getForObject(targetUrl,String.class);



            logger.info(result.getStatusCodeValue());
            logger.info(result.getbody());

当我们在指定相同凭据后使用邮递员触发上述代码中提到的 intergation url 时,它工作正常,我们得到 200 OK 响应代码,当从 Spring Java 应用程序触发相同代码时,我们得到 401未经授权的错误。

解决方法

请尝试使用以下代码

@R_944_10107@Client client = @R_944_10107@ClientBuilder.create().build();
@R_944_10107@Post post = new @R_944_10107@Post("<Your_URL>");

 List<NameValuePair> arguments = new ArrayList<>();
arguments.add(new BasicNameValuePair("class_name",className));
arguments.add(new BasicNameValuePair("company_name",companyName));

 try{
String auth = integrationUsername + ":" + integrationpassword;
byte[] encodedAuth = Base64.encodeBase64(
auth.getBytes(Charset.forName("US-ASCII")) );
String authHeader = "Basic " + new String( encodedAuth );

post.setHeader(@R_944_10107@Headers.CONTENT_TYPE,"application/json");
post.setHeader(@R_944_10107@Headers.ACCEPT,"application/json");
post.setHeader(@R_944_10107@Headers.AUTHORIZATION,authHeader);
post.setEntity(new UrlEncodedFormEntity(arguments));
@R_944_10107@Response response = client.execute(post);

大佬总结

以上是大佬教程为你收集整理的即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误全部内容,希望文章能够帮你解决即使在 RestTemplate 的基本身份验证标头中发送正确的凭据后,也会出现 401 未经授权的错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。