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

相关文章

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,