HTTP Auth认证请求(附代理)-代码篇

2023-05-16

2种方式

方式一:Http请求头上添加Basic Authentication认证
// httpPost
httpPost.addHeader(“Authorization”, "Basic " + Base64.encodeBase64String(“username:password”.getBytes()));
// httpConnection
httpConn.setRequestProperty(“Authorization”, "Basic " + Base64.encodeBase64String(“username:password”.getBytes()));

方式二:使用Authenticator重写getPasswordAuthentication()–无测试过

相关jar包

<dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5</version>
</dependency>

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import sun.misc.BASE64Encoder;

import java.io.IOException;

/**

  • Created by BugRoot
    */
    public class HttpUtils {

    /**

    • Post请求webservice 带http认证

    • @param url 请求地址

    • @param param 请求参数

    • @param SOAPAction SOAPAction 接口–如不需请注释

    • @return
      */
      public static String httpClientPostSOAPActionAndAuth(String url, String param, String username,String password,String SOAPAction){
      System.out.println(param);
      CloseableHttpClient http = HttpClientBuilder.create().setProxy(new HttpHost(“127.0.0.1”,1081)).build();// 测试环境–本地代理方式
      // CloseableHttpClient http = HttpClientBuilder.create().build();// 生产环境–部署到服务器
      HttpPost httpPost = new HttpPost(url);
      CloseableHttpResponse res = null;
      String entity = “”;
      // 请求错误
      String errorMessage="";
      try {
      // 下述方式不推荐,BASE64Encoder和BASE64Decoder这两个方法是sun公司的内部方法,没有 在java api中公开过, 使用这些方法是不安全的
      // String token = username +":"+ password;
      // BASE64Encoder base64en = new BASE64Encoder();
      // token = base64en.encode(token.getBytes(“utf-8”));
      // token = "Basic " + token;
      // System.out.println(token);
      // 建议使用apache的API-可引用import org.apache.commons.codec.binary.Base64;进行替换
      我使用的是java.util的
      String token = “Basic " + “Basic " + Base64.getEncoder().encodeToString(username +”:”+password.getBytes(StandardCharsets.UTF_8));
      StringEntity s = new StringEntity(param, “UTF-8”);
      //s.setContentEncoding(“UTF-8”);
      // s.setContentType(“text/xml”);//发送json数据需要设置contentType
      // s.setContentType(“application/xml”);//发送json数据需要设置contentType
      httpPost.setHeader(“Accept-Encoding”,“gzip,deflate”);
      httpPost.setHeader(“Content-Type”,“text/xml”);
      httpPost.setHeader(“SOAPAction”,SOAPAction); //设置接口方法名–如不需请注释
      httpPost.setHeader(“Host”,“devwebservices.purolator.com”);
      httpPost.setHeader(“Connection”,“Keep-Alive”);
      httpPost.setHeader(“Accept-Encoding”,“gzip,deflate”);
      httpPost.setHeader(“User-Agent”,“Apache-HttpClient/4.1.1 (java 1.5)”);
      // httpPost.setHeader(“Authorization”,token);
      httpPost.setHeader(“Authorization”,“Basic ZmYxOWY0ZTBmZDhmNDE0NTllNjI0M2Q5ZTZmYmJkMTY6dUs3Ln14cCg=”);
      httpPost.setEntity(s);
      res = http.execute(httpPost);
      HttpEntity responseEntity = res.getEntity();
      System.out.println(“response status” + res.getStatusLine());

       // 获取状态码
       int statusCod = res.getStatusLine().getStatusCode();
       if(statusCod > 200){
           // TODO: 2020/7/24
       }
       // 解析响应报文 TODO
       if (responseEntity != null) {
           System.out.println("response length:" + responseEntity.getContentLength());
           entity = EntityUtils.toString(responseEntity);
           System.out.println("response content:" + entity);
      
       } else {
           errorMessage = "service exception";
       }
      

      } catch (ClientProtocolException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      } finally {
      try {
      http.close();
      res.close();
      } catch (IOException e) {
      e.printStackTrace();
      }

      }

      return entity;
      }
      }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP Auth认证请求(附代理)-代码篇 的相关文章

  • golang中默认的HTTP拨号超时值

    我正在运行 golang http 客户端来对服务器进行压力测试 有时我会收到错误 拨号 tcp 161 170 xx xxx 80 操作超时 错误 我认为这是 HTTP 客户端超时 我正在考虑增加超时值https stackoverflo
  • 在 grails 中编写代理

    我正在使用 Gralis 1 3 7 我正在编写一个控制器 需要从另一台服务器获取 PDF 文件并将其返回给客户端 我想以某种相当有效的方式来做到这一点 例如 class DocController def view URL source
  • HTTP 响应可以省略 Reason-Prase 吗?

    正常的 HTTP 响应如下所示 HTTP 1 0 200 OK 可以省略什么吗RFC http www w3 org Protocols rfc2616 rfc2616 sec6 html称为原因短语 就像是 HTTP 1 0 200 RF
  • URL 哈希在重定向之间持续存在

    由于某种原因 当发送服务器端重定向 使用 Location 标头 时 非 IE 浏览器似乎会保留 URL 哈希 如果存在 例子 a simple redirect using Response Redirect http www yahoo
  • AddressAccessDeniedException :无需 netsh 即可解决它?

    我遇到了异常AddressAccessDeniedException因为我的processus没有注册URL的权限 我首先以管理员身份运行我的程序 好的 它成功了 但我现在想要分发我的应用程序 并且我希望每个用户都能够运行它 而不必成为管理
  • iPhone - 从网络服务器获取文件的上次修改日期

    我想检查网络服务器上文件的上次修改日期 任何帮助都会很棒 谢谢 NSURLRequest request NSURLRequest alloc initWithURL aURL NSHTTPURLResponse response NSUR
  • 当 REST 中的资源不支持操作时,HTTP 状态代码 404 或 501

    我有一个 REST 服务 根据正在查看的资源类型 我有某些可用的操作 So Resource1支持Operation1 and Operation2 eg Resource1 Operation1 Resource1 Operation2
  • 从express.js 中删除所有标头

    我正在创建一个页面 其中有一些数据可以由另一个设备解析 我曾经使用 php 执行此操作 但现在将其移至 Node js 我需要从页面中删除所有标题 这样我就只有我的输出 此输出是对 GET 请求的响应 此刻我有 HTTP 1 1 200 O
  • HttpGet 401 状态代码后跟 200 状态代码

    我使用 Apachage HttpComponent 访问 Web 服务时遇到奇怪的行为 我可以访问服务器日志 当我尝试连接到服务器并执行 httpGet 命令时 我可以在日志中首先看到 401 状态 http 未经授权 然后看到 200
  • Jsoup http 日志记录

    有没有办法记录http请求和响应 我们假设以下请求 Connection Response res Jsoup connect LOGIN URL HERE data user USER pass PASS method Connectio
  • .htaccess 路由到服务器上的子目录?性能/加载时间

    我想知道是否可以使用 htaccess 文件将我的域直接路由到服务器上的子目录 我从常规虚拟主机提供商处购买了虚拟主机软件包 其中我的domain com 连接到我的服务器的根目录 我想知道是否可以以某种方式将 htaccess 文件上传到
  • GET 和 POST 方法的单独 Flask 路由

    在 Flask 中定义路由时 最好的做法是使用由多个 HTTP 方法定义的单个路由 并在该单个路由中使用显式逻辑处理不同的 HTTP 方法 例如 app route api users methods GET POST def users
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • 在 Java Servlet 应用程序中设置 HTTP 201 响应的 Location 标头的正确方法是什么

    考虑以下代码向客户端发送 HTTP 201 已创建 响应 String url app things id 42 example response setStatus HttpServletResponse SC CREATED respo
  • 在 Heroku 上获取客户端的真实 IP 地址

    在任何 Heroku 堆栈上 我想获取客户端的 IP 我的第一次尝试可能是 request headers REMOTE ADDR 当然 这是行不通的 因为所有请求都是通过代理传递的 所以替代方法是使用 request headers X
  • org.apache.http 软件包在 API 级别 23 中被删除。替代方案是什么?

    在更新到最新的 android API 级别 23 Marshmallow 后 通过 build gradle 添加以下更改后 所有 org apache http 类都不起作用 android compileSdkVersion 23 b
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • Angular JS 在调用新的 $http 之前取消 $http 调用

    在 Angular JS 1 1 5 中 您可以取消之前启动的 http 调用 这两个link1 https stackoverflow com questions 16962232 in angularjs how to stop ong
  • 响应 301 永久移动

    我曾经得到以下对 php 请求的响应 回复
  • 使用 Http Post 发送图像

    我想使用 Http Post 将图像从 android 客户端发送到 Django 服务器 该图像是从图库中选择的 目前 我正在使用列表值名称 Pairs 将必要的数据发送到服务器并接收来自 Django 的 JSON 响应 是否可以对图像

随机推荐

  • 硬链接与软链接

    硬链接 hard link 与软链接 xff08 又称符号链接 xff0c 即 soft link 或 symbolic link xff09 链接为 Linux 系统解决了文件的共享使用 xff0c 还带来了隐藏文件路径 增加权限安全及节
  • 基于STM32F407四旋翼无人机 --- 姿态解算讲解(四元数)(叉积法融合陀螺仪数据和加速度数据)(五)

    基于STM32F407四旋翼无人机 姿态解算讲解 xff08 五 xff09 姿态解算姿态解算定义欧拉角四元数四元数性质 方向余弦矩阵四元数方向余弦矩阵 叉积法融合陀螺仪数据和加速度数据叉积运算 一阶龙格库塔法四元数更新获得欧拉角 姿态解算
  • 基于STM32F407四旋翼无人机---PID算法控制(六)

    基于STM32F407四旋翼无人机 PID算法控制 xff08 六 xff09 PID介绍PID仿真分析 PID介绍 PID介绍 此算法是由P xff08 比例 xff09 I xff08 积分 xff09 和D xff08 微分 xff0
  • 四足机器人(一)----MATLAB simulink对四足机器人物理建模

    四足机器人 xff08 一 xff09 MATLAB simulink对四足机器人物理建模 一 本设计中用的是网上下载的别人已经画好的四足机器狗的3D模型 那么我们就需要将这些3D模型导入到MATLAB的建模中 xff0c 打开MATLAB
  • 四足机器人(二)---运动学逆解和步态规划

    四足机器人 xff08 二 xff09 运动学逆解和步态规划 运动学逆解步态规划MATLAB仿真 运动学逆解 其实运动学分为运动学正解和运动学逆解 xff0c 二者有什么区别呢 xff1f 因为在四足机器人中用的是12个舵机 xff0c 所
  • 四足机器人(三)--- 姿态控制

    四足机器人 xff08 三 xff09 姿态控制 概述姿态表示使用MATLAB实现姿态控制算法效果 概述 四足机器人运动过程中 xff0c 身体部分的姿态会不断地发生变化 假如机器人的足端一直保持与地面接触且相对位置不发生变化 xff0c
  • VSCode+python+opencv搭建过程

    VSCode 43 python 43 opencv搭建过程 python安装VSCode安装安装opencv python安装 首先打开python的官网 www python org xff0c 进入python官网下载页面 xff0c
  • 智能家居之主机---计划筹备

    智能家居之主机 计划筹备 前言绪言前期构思 硬件平台结构平台 前言 绪言 感觉有一年多没发过文章了 xff0c 这一年多太忙了 xff0c 来到新的公司后要学的太多了 xff0c 代码风格 xff0c 架构 xff0c 操作系统 xff0c
  • 智能家居之主机--环境搭建

    智能家居之主机 环境搭建 硬件环境软件环境结构 硬件环境 上节说到硬件平台的搭建 xff0c 之前是在altium designer上面画好的 xff0c 现在要支持国产 xff0c 没办法只能在立创EDA上面重新画了 xff0c 有的人说
  • 智能家居之主机--驱动层搭建

    智能家居之主机 驱动层搭建 bsp 底层驱动bsp gpiobsp adcbsp uartbsp timer 伪调度 bsp 底层驱动 bsp gpio 利用一个config h的配置文件 xff0c 把所有要使用的gpio的属性配置好 x
  • STM32串口自定义数据接收协议

    文章目录 写在前面0 需求1 问题产生1 1 模块 43 上位机实验1 2 电路板串口数据接收实验1 3 问题来了 xff01 2 开始分析2 1 串口数据格式2 2 测一波波形 3 代码分析4 新的问题 xff1a 串口数据累加总结 写在
  • 科普:电池的保护电路

    科普 xff1a 电池的保护电路 http www cnbeta com articles 204504 htm
  • 汇编语言基础知识-寄存器

    汇编语言基础知识 寄存器 寄存器是距离CPU中最近的存储单元 xff0c 对于现代CPU其获取数据的顺序往往是 CPU 61 61 gt 寄存器 61 61 gt 一级缓存 61 61 gt 二级缓存 61 61 gt 三级缓存 61 61
  • ERROR:未定义标识符“cout“、“endl“

    ERROR情况 xff1a 未定义标识符 span class token string 34 cout 34 span 未定义标识符 span class token string 34 endl 34 span 问题原因 xff1a c
  • VSCode格式化快捷键

    Shift 43 Ctrl 43 F
  • Linux内核源代码分析一(Linux0.12)

    Linux内核源代码分析一 xff08 Linux0 12 xff09 Linux 内核主要由 5 个模块构成 xff0c 它们分别是 xff1a 进程调度模块 内存管理模块 文件系统模块 进程间通信模块和网络接口模块 1 引导启动程序 x
  • Qt类继承关系以及所属模块关系一览表

    Qt类关系一览表 高清版下载 xff1a Qt类继承关系以及所属模块关系一览表 更多内容请关注个人博客 xff1a https blog csdn net qq 43148810
  • cartographer主从机rviz订阅地图出错

    参考 xff1a https answers ros org question 261071 rviz client md5sum error ERROR 1563347805 272316618 Client rviz wants top
  • Gooseeker软件使用教程

    因为课程需要使用到Gooseeker软件 xff0c 写个使用教程防止以后忘记 安装好gooseeker软件 xff0c 下图为安装好的界面 xff1a 点击右上方的 MS谋数台 xff0c 弹出如下界面 xff1a 在左上方的网址栏输入想
  • HTTP Auth认证请求(附代理)-代码篇

    2种方式 方式一 xff1a Http请求头上添加Basic Authentication认证 httpPost httpPost addHeader Authorization 34 Basic 34 43 Base64 encodeBa