1、创建数据库连接类DBConn.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package
com.xju.ws;
import
java.sql.*;
public
class
DBConn {
// 存储机器的名称
private
String DBDRIVER;
// 存储数据库连接路径
private
String DBURL;
// 数据库用户名称
private
String DBUSER;
// 数据库密码
private
String DBPASS;
/* 设置连接数据库相关参数 */
public DBConn(){
DBDRIVER = "oracle.jdbc.driver.OracleDriver";
DBURL = "jdbc:oracle:thin:@10.238.208.33:1521:XjMobileGIS";
DBUSER = "用户名";
DBPASS = "密码";
}
/* 获取Conncetion对象并返回 */
public
Connection getConnection() {
Connection con=
null
;
try
{
Class.forName(DBDRIVER);
// 加载Jdbc驱动程序
con = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
}
catch
(Exception e) {
e.printStackTrace();
}
return
con;
}
}
|
2、创建业务实现类GetTokenImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
package
com.xju.ws;
import
java.sql.Connection;
import
java.sql.PreparedStatement;
import
java.sql.ResultSet;
import
java.sql.SQLException;
public
class
GetTokenImpl {
public
String[] getResult(String usr, String pwd) {
String[] str =
new
String[
4
];
Connection connection =
null
;
PreparedStatement ps =
null
;
ResultSet rs =
null
;
String sql =
"select tb_user.selectmodel as selecttype,tb_user.domain as domain,"
+
"tb_authority.username as username,tb_authority.upassword as upassword from tb_user,"
+
"tb_authority where tb_user.selectarea= tb_authority.statename and "
+
"tb_user.selectservice= tb_authority.servicename and tb_user.userid=? and tb_user.userpwd=?"
;
DBConn dbcon =
new
DBConn();
connection = dbcon.getConnection();
try
{
ps = connection.prepareStatement(sql);
ps.setString(
1
, usr);
ps.setString(
2
, pwd);
rs = ps.executeQuery();
if
(rs.next()) {
str[
0
] = rs.getString(
"selecttype"
);
str[
1
] = rs.getString(
"domain"
);
str[
2
] = rs.getString(
"username"
);
str[
3
] = rs.getString(
"upassword"
);
}
else
{
str[
0
] =
""
;
str[
1
] =
""
;
str[
2
] =
""
;
str[
3
] =
""
;
}
}
catch
(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
closeResultSet(rs);
closeStatement(ps);
closeConnection(connection);
}
return
str;
}
public
void
closeStatement(PreparedStatement ps) {
if
(ps !=
null
) {
try
{
ps.close();
ps =
null
;
}
catch
(SQLException sqle) {
sqle.printStackTrace();
}
}
}
public
void
closeResultSet(ResultSet rs) {
if
(rs !=
null
) {
try
{
rs.close();
rs =
null
;
}
catch
(SQLException sqle) {
sqle.printStackTrace();
}
}
}
public
void
closeConnection(Connection connection) {
try
{
if
(connection !=
null
&& !connection.isClosed()) {
connection.close();
connection =
null
;
}
}
catch
(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
|
3、创建Token获取类GetToken.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
package
com.xju.ws;
import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.List;
import
org.apache.http.HttpEntity;
import
org.apache.http.HttpResponse;
import
org.apache.http.NameValuePair;
import
org.apache.http.client.ClientProtocolException;
import
org.apache.http.client.HttpClient;
import
org.apache.http.client.entity.UrlEncodedFormEntity;
import
org.apache.http.client.methods.HttpPost;
import
org.apache.http.impl.client.DefaultHttpClient;
import
org.apache.http.message.BasicNameValuePair;
import
org.apache.http.util.EntityUtils;
public
class
GetToken {
public
String queryToken(String usr, String pwd) {
String[] str =
new
String[
4
];
// GetViewService test=new GetViewService();
GetTokenImpl tokenPara =
new
GetTokenImpl();
str = tokenPara.getResult(usr, pwd);
// str[0]服务类型:存储服务类型Client/Server
// str[1]服务网址:http://10.236.23.2/mapsercer
// str[2]后台用户名
// str[3]后台密码
// 存储令牌环
String agsToken =
""
;
String referer_ip =
""
;
// 创建一个http客户端
HttpClient client =
new
DefaultHttpClient();
// 创建一个POST请求
HttpPost request =
new
HttpPost(
"http://10.238.208.34/arcgis/admin/generateToken"
);
// 设置HTTP POST请求参数必须用NameValuePair
List<NameValuePair> params =
new
ArrayList<NameValuePair>();
if
(str[
0
].equals(
"Server"
)) {
referer_ip = str[
1
];
params.add(
new
BasicNameValuePair(
"client"
,
"referer"
));
params.add(
new
BasicNameValuePair(
"referer"
, referer_ip));
params.add(
new
BasicNameValuePair(
"expiration"
,
"1440"
));
}
else
{
referer_ip = str[
1
];
params.add(
new
BasicNameValuePair(
"client"
,
"ip"
));
params.add(
new
BasicNameValuePair(
"ip"
, referer_ip));
params.add(
new
BasicNameValuePair(
"expiration"
,
"480"
));
}
params.add(
new
BasicNameValuePair(
"username"
, str[
2
]));
params.add(
new
BasicNameValuePair(
"password"
, str[
3
]));
params.add(
new
BasicNameValuePair(
"f"
,
"json"
));
// 设置http Post请求参数
try
{
HttpEntity entity =
new
UrlEncodedFormEntity(params);
request.setEntity(entity);
HttpResponse response = client.execute(request);
if
(response.getStatusLine().getStatusCode() ==
200
) {
// 如果状态码为200,就是正常返回
String result = EntityUtils.toString(response.getEntity());
result.replace(
"\n"
,
""
).replace(
"\r"
,
""
).replace(
"\t"
,
""
);
String[] splitInfos = result.split(
"\""
);
if
(splitInfos !=
null
&& splitInfos.length >
2
) {
if
(splitInfos[
3
].length() >
15
&& splitInfos[
1
].trim().equals(
"token"
)) {
agsToken = splitInfos[
3
].trim();
}
}
}
}
catch
(ClientProtocolException e) {
e.printStackTrace();
// 进行处理操作
}
catch
(IOException e) {
// 进行处理操作
}
return
agsToken;
}
}
|
备注:Client模式Token有效期为8小时,Server模式Token有效期为24小时。
4、由下向上模式基于GetToken.java类创建Web Server
调用地址:http://10.238.208.34:80/GetTokenService/GetTokenPort?WSDL
(1)Java调用方式关键代码
1
2
3
|
GetTokenService service =
new
GetTokenService();
GetTokenDelegate delegate = service.getGetTokenPort();
String token=delegate.queryToken(
"username"
,
"123456"
);
|
(2)C#调用代码
1
2
3
|
--添加Web引用,Web引用名为:TokenService
TokenService.GetTokenService service =
new
TokenService.GetTokenService();
string token = service.queryToken(
"username"
,
"123456"
);
|
附件:http://down.51cto.com/data/2364286
本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1394280,如需转载请自行联系原作者