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

阅读: 评论:0

HTTPAuth认证请求(附代理)-代码篇
2种⽅式
⽅式⼀:Http请求头上添加Basic Authentication认证
// httpPost
httpPost.addHeader(“Authorization”, "Basic " + deBase64String(“username:password”.getBytes()));
// httpConnection
httpConn.setRequestProperty(“Authorization”, "Basic " +
⽅式⼆:使⽤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.hods.CloseableHttpResponse;
import org.apache.hods.HttpPost;
import org.ity.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 = ate().setProxy(new HttpHost(“127.0.0.1”,1081)).build();// 测试环境–本地代理⽅式
// CloseableHttpClient http = ate().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 = Bytes(“utf-8”));
// token = "Basic " + token;
// System.out.println(token);
// 建议使⽤apache的API-可引⽤import dec.binary.Base64;进⾏替换
我使⽤的是java.util的
String token = “Basic " + “Basic " + Encoder().encodeToString(username
+”:”+Bytes(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”);
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 = ute(httpPost);
HttpEntity responseEntity = Entity();
System.out.println(“response status” + StatusLine());
/
/ 获取状态码
int statusCod = StatusLine().getStatusCode();
if(statusCod > 200){
// TODO: 2020/7/24
}
// 解析响应报⽂ TODO
if (responseEntity != null) {
System.out.println("response length:" + ContentLength());
entity = String(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();
http.close();
res.close();
} catch (IOException e) { e.printStackTrace();
}上海国乐
}
return entity;
}伞齿轮
}

本文发布于:2023-06-27 20:34:19,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/138370.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:请求   代理   设置   认证   需要   数据   发送   需请
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图