easypay.network2/3
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import io.github.xiong_it.easypay.PayParams;
import io.github.xiong_it.easypay.util.ThreadManager;
/**
* @author 注释者:王教成
* @version 注释版:1.0.0
* 网络统一资源定位器连接客户端
*/
public class HttpUrlConnectionClient implements NetworkClientInterf {
/**
* 实现父类获取方法
* @param payParams 支付参数
* @param callBack 网络客户端接口中回调接口
*/
@Override
public void get(final PayParams payParams, final CallBack callBack) {
Runnable command = new Thread() {//创建新线程
@Override
public void run() {
super.run();//调用父类方法
String apiUrl = payParams.getApiUrl();//支付参数获取API统一资源定位器
URL url = null;//声明统一资源定位器
HttpURLConnection connection = null;//声明网络统一资源定位器连接
InputStream inputStream = null;//声明输入流
try {
StringBuffer sburl = new StringBuffer();
// TODO 与服务器开发人员协商接口形式,需要为微信、支付宝、银联等,预支付信息走一个接口,通过pay_way或者其他字段进行区分
// 以下信息除商品详情介绍(goods_introduction)外,均为必须上传字段,key值与服务器人员协商自行定义
sburl.append(apiUrl)//添加API统一资源定位器
.append("?")
.append("pay_way=").append(payParams.getPayWay())//添加支付方式
.append("&")
.append("price=").append(payParams.getGoodsPrice())//添加商品价格
.append("&")
.append("goods_name=").append(payParams.getGoodsName())//添加商品名称
.append("&")
.append("goods_introduction=").append(payParams.getGoodsIntroduction());//添加商品介绍
url = new URL(sburl.toString());//创建统一资源定位器
connection = (HttpURLConnection) url.openConnection();//打开连接
connection.setRequestMethod("GET");//设置请求方法
connection.setConnectTimeout(20 * 1000);//设置连接超时2秒
connection.setReadTimeout(10 * 1000);//设置读取超时1秒
connection.connect();//连接
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {//如果连接请求代码是网络正常
inputStream = connection.getInputStream();//连接获取输入流
byte[] data = http://www.gunmi.cn/v/new byte[512];//创建字节数组
int len = 0;//声明长度
StringBuffer sb = new StringBuffer();//创建线程安全字符串变量
while ((len = inputStream.read(data)) > 0) {
sb.append(new String(data, 0, len));//迭代添加输入流到线程安全字符串变量
}
callBack.onSuccess(sb.toString());//成功回调
} else {
callBack.onFailure();//否则失败回调
}
} catch (Exception e) {
callBack.onFailure();//捕获异常,失败回调
} finally {
if (connection != null) {
connection.disconnect();//如果连接非空,取消连接
}
if (inputStream != null) {
try {
inputStream.close();//如果输入流非空,关闭输入流
} catch (IOException e) {
e.printStackTrace();//捕获输入输出异常,打印异常跟踪栈
}
}
}
}
};
ThreadManager.execute(command);//线程管理器执行线程
}
/**
* 实现父类邮寄方法
* @param payParams 支付参数
* @param callBack 网络客户端接口中回调接口
*/
@Override
public void post(final PayParams payParams, final CallBack callBack) {
Runnable command = new Thread() {//创建新线程
@Override
public void run() {
super.run();//调用父类方法
String apiUrl = payParams.getApiUrl();//支付参数获取API统一资源定位器
URL url = null;//声明统一资源定位器
HttpURLConnection connection = null;//声明网络统一资源定位器连接
InputStream inputStream = null;//声明输入流
OutputStream outputStream = null;//声明输出流
// TODO 与服务器开发人员协商接口形式,需要为微信、支付宝、银联等,预支付信息走一个接口,通过pay_way或者其他字段进行区分
// 以下信息除商品详情介绍(goods_introduction)外,均为必须上传字段,key值与服务器人员协商自行定义
try {
url = new URL(apiUrl);//创建统一资源定位器
connection = (HttpURLConnection) url.openConnection();//打开连接
connection.setRequestMethod("POST");//设置请求方法
connection.setConnectTimeout(20 * 1000);//设置连接超时2秒
connection.setReadTimeout(10 * 1000);//设置读取超时1秒
connection.setDoOutput(true);//设置允许输出
outputStream = connection.getOutputStream();//获取输出流
StringBuffer stringBuffer = new StringBuffer();//创建线程安全字符串变量
stringBuffer.append("pay_way=").append(payParams.getPayWay())//添加支付方式
.append("&")
.append("price=").append(payParams.getGoodsPrice())//添加商品价格
.append("&")
.append("goods_name=").append(payParams.getGoodsName())//添加商品名称
.append("&")
.append("goods_introduction=").append(payParams.getGoodsIntroduction());//添加商品介绍
String params = stringBuffer.toString();//线程安全字符串变量转字符串
outputStream.write(params.getBytes());//输出流写字符串字节数组
outputStream.flush();//输出流清空缓冲区
connection.connect();//连接
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {//如果连接请求代码是网络正常
inputStream = connection.getInputStream();//连接获取输入流
byte[] data = http://www.gunmi.cn/v/new byte[512];//创建字节数组
int len = 0;//声明长度
StringBuffer sb = new StringBuffer();//创建线程安全字符串变量
while ((len = inputStream.read(data)) > 0) {
sb.append(new String(data, 0, len));//迭代添加输入流到线程安全字符串变量
}
callBack.onSuccess(sb.toString());//成功回调
} else {
callBack.onFailure();//否则失败回调
}
} catch (Exception e) {
callBack.onFailure();//捕获异常,失败回调
} finally {
if (connection != null) {
connection.disconnect();//如果连接非空,取消连接
}
if (inputStream != null) {
try {
inputStream.close();//如果输入流非空,关闭输入流
} catch (IOException e) {
e.printStackTrace();//捕获输入输出异常,打印异常跟踪栈
}
}
if (outputStream != null) {
try {
outputStream.close();//如果输出流非空,管理输出流
} catch (IOException e) {
e.printStackTrace();//捕获输入输出异常,打印异常跟踪栈
}
}
}
}
};
ThreadManager.execute(command);//线程管理器执行线程
}
}
- VS2015中调试提示未能正确加载TraceLogPackage包
- Driver Package Installer可以删除吗
- sublime text 3怎么安装package control
- sublime text3 怎么安装package control
- easypay.pay
- easypay.network3/3
- easypay.network1/3