2
13693261870
2022-09-16 653761a31dfeb50dd3d007e892d69c90bf0cdafc
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
package com.landtool.lanbase.modules.res.controller;
 
import java.util.Iterator;
import java.util.Map;
 
import javax.wsdl.Binding;
import javax.wsdl.Definition;
import javax.wsdl.Service;
import javax.wsdl.WSDLException;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
@RequestMapping("res/webservice")
public class WebServiceController {
 
    @RequestMapping("/getWebServiceInfo")
    @ResponseBody
    public String getWebServiceInfo(String webServiceUrl){
        String result = "";
        if(webServiceUrl == null || webServiceUrl.equals("")){
            return result;
        }
        if(webServiceUrl.indexOf("wsdl") == -1) {
            webServiceUrl += (webServiceUrl.indexOf("?") != -1 ? "&wsdl" : "?wsdl");
        }
        try {
            WSDLFactory factory = WSDLFactory.newInstance();
            WSDLReader reader = factory.newWSDLReader();
            reader.setFeature("javax.wsdl.verbose", true);
            reader.setFeature("javax.wsdl.importDocuments", true);
            Definition def = reader.readWSDL(webServiceUrl);
            Map services = def.getServices();
            Iterator<Map.Entry> siterator = services.entrySet().iterator();
            String servcename = ((Service) siterator.next().getValue()).getQName().getLocalPart().toString();
            String namespaceURI = def.getTargetNamespace();
            Map bindings = def.getBindings();
            Iterator<Map.Entry> biterator = bindings.entrySet().iterator();
            String wsports = "";
            while (biterator.hasNext()) {
                Binding binding = (Binding) biterator.next().getValue();
                if (binding != null) {
                    if (wsports != "") wsports += ",";
                    wsports += binding.getQName().getLocalPart();
                }
            }
            result = "{wsports:'" + wsports + "',servicename:'" + servcename + "',tns:'" + namespaceURI + "'}";
        } catch (WSDLException e) {
            e.printStackTrace();
        }
        return result;
    }
}