1、创建数据库连接类DBConn.java

wKioL1NHtCyBeWUxAAHAJUMkHjU986.jpg


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" );