import org.apache.commons.codec.binary.Base64;
import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Date;
public class Https16 {
public static void main(String[] args) {
String url="http://127.0.0.1/xpages/view.nsf/ag_treegrid_load?openagent&id=0.768400088888856";
//System.out.println(GetUrl(url,"admin","3624"));
url="http://127.0.0.1/xpages/view.nsf/ag_ztree?openagent&id=0.9666194579210685";
System.out.println(FromUrlPost(url,"admin","3624","id=5&name=Partner",true));
}
public static String GetUrl(String strurl,String username,String password){
return FromUrl("GET", strurl, username, password);
}
public static String PostUrl(String strurl,String username,String password){
return FromUrl("POST", strurl, username, password);
}
public String PostUrl_Pro(String strurl,String username,String password,String xml,String contentType){
return FromUrl_Pro("POST", strurl, username, password,xml,contentType);
}
/*
* post请求
*/
public static String FromUrlPost(String strurl,String username,String password,String xml,boolean SOAPAction){
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
OutputStream out = null;
Date d1 = new Date();
try {
// 创建远程url连接对象
URL url = new URL(strurl);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
connection = (HttpURLConnection) url.openConnection();
// 设置连接方式:GET,POST
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
if(SOAPAction){
connection.setRequestProperty("SOAPAction", "");
}
//使用base64进行加密
byte[] tokenByte = Base64.encodeBase64((username+":"+password).getBytes());
//将加密的信息转换为string
String tokenStr = new String(tokenByte,"UTF-8");
//Basic YFUDIBGDJHFK78HFJDHF== token的格式
String token = "Basic "+tokenStr;
//System.out.println(token);
connection.setRequestProperty("Authorization",token);
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
out = connection.getOutputStream(); // 获取输出流对象
connection.getOutputStream().write(xml.getBytes("UTF-8")); // 将要提交服务器的SOAP请求字符流写入输出流
out.flush();
out.close();
//System.out.println(connection.getResponseCode());
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connection.disconnect();// 关闭远程连接
}
Date d2 = new Date();
//System.out.println(d2.getTime() - d1.getTime());
//System.out.println("****** END ********");
//System.out.println();
return result;
}
public static String FromUrl(String GorP,String strurl,String username,String password){
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
Date d1 = new Date();
try {
//String strurl="https://apisalesdemo2.successfactors.eu/odata/v2/?$format=json";
//String strurl2="https://apisalesdemo2.successfactors.eu/odata/v2/WfRequest?$filter=status eq 'PENDING'&$select=wfRequestId,status,createdOn&$format=json";
// 创建远程url连接对象
URL url = new URL(strurl);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
//connection = (HttpsURLConnection) url.openConnection();
connection = (HttpURLConnection) url.openConnection();
//connection.setSSLSocketFactory(new TLSSocketConnectionFactory());
connection.setDoInput(true);
connection.setDoOutput(true);
//username="apiuser@SFPART033161";
//password="Welcome1";
//使用base64进行加密
byte[] tokenByte = Base64.encodeBase64((username+":"+password).getBytes());
//将加密的信息转换为string
String tokenStr = new String(tokenByte,"UTF-8");
//Basic YFUDIBGDJHFK78HFJDHF== token的格式
String token = "Basic "+tokenStr;
//System.out.println(token);
connection.setRequestProperty("Authorization",token);
// 设置连接方式:GET,POST
connection.setRequestMethod(GorP);
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}else {
System.out.println(connection.getResponseCode());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connection.disconnect();// 关闭远程连接
}
Date d2 = new Date();
//System.out.println(d2.getTime() - d1.getTime());
//System.out.println("****** END ********");
//System.out.println();
return result;
}
public String FromUrl_Pro(String GorP,String strurl
,String username,String password,String xml,String contentType){
HttpsURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
Date d1 = new Date();
try {
//String strurl="https://apisalesdemo2.successfactors.eu/odata/v2/?$format=json";
//String strurl2="https://apisalesdemo2.successfactors.eu/odata/v2/WfRequest?$filter=status eq 'PENDING'&$select=wfRequestId,status,createdOn&$format=json";
// 创建远程url连接对象
URL url = new URL(strurl);
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
connection = (HttpsURLConnection) url.openConnection();
//connection.setSSLSocketFactory(new TLSSocketConnectionFactory());
connection.setDoInput(true);
connection.setDoOutput(true);
//username="apiuser@SFPART033161";
//password="Welcome1";
//使用base64进行加密
byte[] tokenByte = Base64.encodeBase64((username+":"+password).getBytes());
//将加密的信息转换为string
String tokenStr = new String(tokenByte,"UTF-8");
//Basic YFUDIBGDJHFK78HFJDHF== token的格式
String token = "Basic "+tokenStr;
//System.out.println(token);
connection.setRequestProperty("Authorization",token);
connection.setRequestProperty("Content-Type", contentType);
// 设置连接方式:GET,POST
connection.setRequestMethod(GorP);
// 设置连接主机服务器的超时时间:15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间:60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
OutputStream out = connection.getOutputStream(); // 获取输出流对象
connection.getOutputStream().write(xml.getBytes("UTF-8")); // 将要提交服务器的SOAP请求字符流写入输出流
out.flush();
out.close();
System.out.println(connection.getResponseCode());
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 封装输入流is,并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connection.disconnect();// 关闭远程连接
}
Date d2 = new Date();
System.out.println(d2.getTime() - d1.getTime());
System.out.println("****** END ********");
//System.out.println();
return result;
}
/**
*
* @param strurl https://<hostname>/odata/v2/approveWfRequest
* 不用传?wfRequestId=1234L
* @param username
* @param password
* @param wfRequestId
* @param Param
* @return
* @throws UnsupportedEncodingException
*/
public String ApproveFlowPost(String strurl,String username,String password,
String wfRequestId,String Param) throws UnsupportedEncodingException{
//使用此工具可以将键值对编码成"Key=Value&Key2=Value2&Key3=Value3”形式的请求参数
String requestParam =URLEncoder.encode(Param ,"UTF-8");
String appurl=strurl+"?wfRequestId="+wfRequestId+"L&comment="+requestParam+"&$format=json";
//String appurl=strurl+"?wfRequestId="+wfRequestId+"L&$format=json";
return FromUrl("POST", appurl, username, password);
}
HttpURLConnection Basic auth 认证验证,java获取Basic auth认证数据
最新推荐文章于 2023-10-20 11:00:31 发布
本文介绍了如何在Java中使用HttpURLConnection实现基本的HTTP Basic Authentication,详细讲解了认证过程,并探讨了如何获取和处理认证数据,适用于需要在Java应用中进行HTTP请求的身份验证场景。
304

被折叠的 条评论
为什么被折叠?



