import javax.microedition.io.*;
import shared.BillInfo;
import shared.MessageConstants;
import shared.AccountInfo;
import java.io.*;
public class HTTPCommunication {
private String serviceURL;
private boolean offline = true;
private ProgressObserverUI progressObserverUI = null;
public HTTPCommunication(String serviceURL,
ProgressObserverUI progressObserverUI) {
this.serviceURL = serviceURL;
this.progressObserverUI = progressObserverUI;
return;
}
public boolean isOffline() {
return offline;
}
public void setOffline(boolean offline) {
this.offline = offline;
return;
}
public boolean login(String userName, String password) {
int passed = 0;
HttpConnection connection = null;
DataOutputStream outputStream = null;
DataInputStream inputStream = null;
try {
connection = openConnection();
updateProgress();
outputStream = openConnectionOutputStream(connection);
outputStream.writeByte(MessageConstants.OPERATION_LOGIN_USER);
outputStream.writeUTF(userName);
outputStream.writeUTF(password);
outputStream.close();
updateProgress();
inputStream = openConnectionInputStream(connection);
passed = inputStream.readInt();
System.out.println(passed);
updateProgress();
//如果服务器返回1,则表示登陆成功
} catch (IOException ioe) {
} finally {
//释放资源
closeConnection(connection, outputStream, inputStream);
}
if (passed == 1)
return true;
else
return false;
}
public BillInfo[] getBillData() throws IOException {
HttpConnection conn = null;
DataOutputStream outputStream = null;
DataInputStream inputStream = null;
try {
conn = openConnection();
//更新进度条
updateProgress();
outputStream = openConnectionOutputStream(conn);
outputStream.writeByte(MessageConstants.OPERATION_LIST_ACCOUNT);
if (conn.getResponseCode() == HttpConnection.HTTP_OK) {
inputStream = openConnectionInputStream(conn);
//更新进度条
updateProgress();
//获得缴费信息
int length = (int) conn.getLength();
if (length > 0) {
//读取传输过来的缴费清单的数目
int num = inputStream.readInt();
BillInfo[] binfo = new BillInfo[num];
for (int i = 0; i < num; i++) {
byte[] data = new byte[inputStream.readInt()];
//读取数据
inputStream.read(data);
binfo[i] = new BillInfo();
binfo[i].deserialize(data);
//显示返回信息
}
//更新进度条
updateProgress();
return binfo;
}
}
} catch (Exception e) {
System.out.println(e.toString());
} finally {
//释放资源
if (progressObserverUI != null) {
progressObserverUI = null;
}
closeConnection(conn, outputStream, inputStream);
}
return null;
}
public boolean updateAccount(AccountInfo accountInfo) {
int passed = 0;
HttpConnection connection = null;
DataOutputStream outputStream = null;
DataInputStream inputStream = null;
try {
connection = openConnection();
//更新进度条
updateProgress();
outputStream = openConnectionOutputStream(connection);
//发送更新信息的消息
outputStream.writeByte(MessageConstants.OPERATION_UPDATE_ACCOUNT);
//发送用户信息
byte[] data = accountInfo.serialize();
//发送数据的长度
outputStream.writeInt(data.length);
//发送数据
outputStream.write(data);
outputStream.close();
updateProgress();
//从服务器上获得是否成功发送的结果
inputStream = openConnectionInputStream(connection);
passed = inputStream.readInt();
//更新进度条
updateProgress();
} catch (IOException ioe) {
} finally {
closeConnection(connection, outputStream, inputStream);
}
if (passed == 1)
return true;
else
return false;
}
private HttpConnection openConnection() throws IOException {
try {
HttpConnection connection = (HttpConnection) Connector
.open(serviceURL);
connection.setRequestProperty("User-Agent",
"BANKBILL1.0/MIDP-2.0 Configuration/CLDC-1.1");
connection.setRequestProperty("Content-Type",
"application/octet-stream");
connection.setRequestMethod(HttpConnection.POST);
offline = false;
return connection;
} catch (IOException ioe) {
offline = true;
throw ioe;
}
}
private DataOutputStream openConnectionOutputStream(
HttpConnection connection) throws IOException {
try {
return connection.openDataOutputStream();
} catch (IOException ioe) {
offline = true;
throw ioe;
}
}
private DataInputStream openConnectionInputStream(HttpConnection connection)
throws IOException {
try {
int responseCode = connection.getResponseCode();
if (responseCode == HttpConnection.HTTP_OK) {
DataInputStream inputStream = connection.openDataInputStream();
return inputStream;
}
} catch (IOException ioe) {
offline = true;
}
return null;
}
void closeConnection(HttpConnection connection,
DataOutputStream outputStream, DataInputStream inputStream) {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException ioe) {
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException ioe) {
}
}
if (connection != null) {
try {
connection.close();
} catch (IOException ioe) {
}
}
return;
}
protected void updateProgress() {
if (progressObserverUI != null) {
if (!progressObserverUI.isStopped()) {
progressObserverUI.updateProgress();
return;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
J2ME手机移动银行的开发.rar (57个子文件)
BankServer
.project 1KB
WEB-INF
web.xml 568B
lib
classes
BankBillServlet.class 5KB
MessageConstants.class 628B
AccountInfo.class 2KB
BillInfo.class 2KB
web.xml.bak 284B
META-INF
MANIFEST.MF 39B
.mymetadata 311B
.myeclipse
src
MessageConstants.java 572B
BillInfo.java 1KB
AccountInfo.java 2KB
BankBillServlet.java 5KB
.classpath 332B
BankClient
.project 542B
bin
ProgressObserver.class 264B
BankBillMidlet.class 3KB
AccountInfoUI$1.class 2KB
BankBillListUI.class 2KB
HTTPCommunication.class 5KB
TickerDemo.class 1KB
SignOnUI.class 4KB
AccountInfoUI.class 4KB
SignOnUI$1.class 2KB
ProgressObserverUI.class 2KB
shared
MessageConstants.class 642B
AccountInfo.class 2KB
BillInfo.class 2KB
.settings
org.eclipse.jdt.core.prefs 208B
BankClient.jad 666B
src
ProgressObserver.java 234B
ProgressObserverUI.java 2KB
BankBillMidlet.java 3KB
HTTPCommunication.java 6KB
BankBillListUI.java 1017B
TickerDemo.java 1KB
SignOnUI.java 3KB
AccountInfoUI.java 3KB
shared
MessageConstants.java 587B
BillInfo.java 1KB
AccountInfo.java 2KB
verified
libs
classes
ProgressObserver.class 264B
BankBillMidlet.class 3KB
AccountInfoUI$1.class 2KB
BankBillListUI.class 2KB
HTTPCommunication.class 6KB
TickerDemo.class 1KB
SignOnUI.class 4KB
AccountInfoUI.class 4KB
SignOnUI$1.class 2KB
ProgressObserverUI.class 2KB
shared
MessageConstants.class 642B
AccountInfo.class 2KB
BillInfo.class 2KB
.eclipseme 226B
res
remote.png 499B
.classpath 242B
共 57 条
- 1
资源评论
gaojun2002
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- PHP端通过modbus协议跟第三方设备进行数据通信
- navicat安装包亲测可用
- 算法部署-使用OpenVINO部署MobileStyleGAN轻量化高保真图像合成算法-项目源码-优质项目实战.zip
- 基于java实现远程采集华为逆变器使用modbus tcp协议进行通讯的设备数据
- Unity画面共享Spout插件
- 基于C++用modbus实现的工业设备的数据采集程序,支持Tcp、串口
- 完结12章AI Agent智能应用从0到1定制开发
- 15白落梅:你是锦瑟我为流年:三毛的万水千山-3491776.mobi
- Federated Learning-Aided Prognostics in the Shipping 4.0: Princi
- OFDM 的鲁棒频率和定时同步文献部分阅读笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功