Web后端http请求(带用户名和密码防止401 Unauthorized)

2024-05-01 21:38

本文主要是介绍Web后端http请求(带用户名和密码防止401 Unauthorized),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java

Java这方面的Jar包应该比较多,比如HttpClient,我这里使用最基本的:

[java]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. //认证信息对象,用于包含访问翻译服务的用户名和密码    
  2.             Authenticator auth = new MyAuthenticator("用户名""密码");    
  3.             Authenticator.setDefault(auth);    
  4.                 
  5.             // 打开和URL之间的连接    
  6.             HttpsURLConnection connection = (HttpsURLConnection)realUrl.openConnection();    
  7.             connection.setDoInput(true);      
  8.             connection.setDoOutput(true);//允许连接提交信息           
  9.             connection.setRequestMethod("GET");    
  10.                 
  11.             // 建立实际的连接    
  12.             connection.connect();   

  使用代理的方式是在打开Http连接的时候同时传递一个Proxy参数。如果需要验证信息的话我们可以添加一个Http头参数来实现。

     

[java]  view plain copy
print ?
  1. //格式如下:  
  2. "Proxy-Authorization""Basic Base64.encode(user:password)"  
  3. String headerKey = "Proxy-Authorization";  
  4. String headerValue = "Basic " + Base64.encode(user+":"+password);  
  5. conn.setRequestProperty(headerKey, headerValue);  

  


import java.io.File;



import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.junit.Test;


import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;


public class TestVidyo {
@Test
public void downLoad() {
 DefaultHttpClient httpClient = new DefaultHttpClient();
 OutputStream out = null;
 InputStream in = null;
 
 String localFileName = "";
 String url = "http://****.com.cn/replay/downloadRecording.do?file=680f1d0d-3251-4948-b7bb-975d6e2cf1e3"; // filelink
 String username = "super";
 String password = "password";
 try {
  HttpGet httpGet = new HttpGet(url);
  String auth = "Basic " + Base64.encode((username + ":" + password).getBytes());
  httpGet.addHeader("Authorization", auth);
  HttpResponse httpResponse = httpClient.execute(httpGet);
  HttpEntity entity = httpResponse.getEntity();
  in = entity.getContent();
  long length = entity.getContentLength();
  if (length <= 0) {
   System.out.println("下载文件不存在!");
   return;
  }   
  File file = new File(localFileName);
  if(!file.exists()){
   file.createNewFile();
  }
  out = new FileOutputStream(file);  
  byte[] buffer = new byte[4096];
  int readLength = 0;
  while ((readLength=in.read(buffer)) > 0) {
   byte[] bytes = new byte[readLength];
   System.arraycopy(buffer, 0, bytes, 0, readLength);
   out.write(bytes);
  }
  out.flush();
 } catch (IOException e) {
  e.printStackTrace();
 } catch (Exception e) {
  e.printStackTrace();
 }finally{
  try {
   if(in != null){
    in.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
  try {
   if(out != null){
    out.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}


}

       为了大家清楚的知道引用的jar包,import一同奉上。本编博客是结合各方高手贴总结后的,也是经过本人测试成功后才发布的。相应jar包在csdn可以下载

      其中的Base64.encode(user:password)是指把用户名和密码用冒号连接起来之后使用Base64编码后的值作为值的一部分。  

      通过这种方式只影响特定的Http连接,但是需要对代码进行修改。这种方式下是否可以使用Authenticator还未做验证。


这篇关于Web后端http请求(带用户名和密码防止401 Unauthorized)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/952732

相关文章

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据