/// <summary> /// Discovers a service endpoint by keywords. Use (%) to indicate any value for any number of characters and an underscore (_) to indicate any value for a single character. The backslash character (\) /// </summary> /// <param name="keywords"></param> /// <param name="discoveryEndpointAddress"></param> /// <param name="username"></param> /// <param name="password"></param> /// <param name="securityEndpointAddress"></param> /// <returns></returns> public string[] DiscoverEndpointKeyWord(string[] keywords, string authtoken) { if (keywords == null) { throw new ArgumentNullException("keywords"); } string authTok = ""; if (authrequired && String.IsNullOrEmpty(authtoken)) { authTok = getAuthToken(); } else { authTok = authtoken; } find_serviceRequest1 req = new find_serviceRequest1(); req.find_service = new find_service2(); req.find_service.name = new name1[keywords.Length]; for (int i = 0; i < keywords.Length; i++) { req.find_service.name[i] = new name1(); // ignored req.name[i].lang req.find_service.name[i].Value = keywords[i]; } req.find_service.findQualifiers = new string[2]; req.find_service.findQualifiers[0] = uddi_v3_findQualifiers.approximateMatch; req.find_service.findQualifiers[1] = uddi_v3_findQualifiers.caseInsensitiveMatch; if ((authTok != null) && (authrequired)) { req.find_service.authInfo = authTok; } find_serviceResponse1 response = null; try { response = inquiryclient.find_service(req); } catch (Exception ex) { throw new Exception(discoveryError, ex); } get_serviceDetailRequest1 sreq = new get_serviceDetailRequest1(); if (response == null || response.serviceList == null || response.serviceList.serviceInfos == null || response.serviceList.serviceInfos.Length == 0) { return new string[] { } } ; //no services returned sreq.get_serviceDetail = new get_serviceDetail2(); sreq.get_serviceDetail.serviceKey = new string[response.serviceList.serviceInfos.Length]; for (int k = 0; k < response.serviceList.serviceInfos.Length; k++) { sreq.get_serviceDetail.serviceKey[k] = response.serviceList.serviceInfos[k].serviceKey; } get_serviceDetailResponse1 sresponse = null; try { sresponse = inquiryclient.get_serviceDetail(sreq); } catch (Exception ex) { throw new Exception(discoveryError, ex); } List <string> ret = new List <string>(); if (sresponse != null && sresponse.serviceDetail != null) { foreach (businessService2 bs in sresponse.serviceDetail.businessService) { //if (bs.Signature != null) // if (!VerifySignature(bs)) // throw new Exception(signatureError); if (bs.bindingTemplates != null) { foreach (bindingTemplate2 bt in bs.bindingTemplates) { //if (bt.Signature != null) // if (!VerifySignature(bt)) // throw new Exception(signatureError); accessPoint2 ap = bt.Item as accessPoint2; if (ap != null) { string[] apList = parseResults(ap, authTok); if (apList != null) { for (int k = 0; k < apList.Length; k++) { ret.Add(apList[k]); } } } } } } } return(ret.ToArray()); }
/// <summary> /// Discovers a service endpoint by keywords. Use (%) to indicate any value for any number of characters and an underscore (_) to indicate any value for a single character. The backslash character (\) /// </summary> /// <param name="keywords"></param> /// <param name="discoveryEndpointAddress"></param> /// <param name="username"></param> /// <param name="password"></param> /// <param name="securityEndpointAddress"></param> /// <returns></returns> public string[] DiscoverEndpointKeyWord(string[] keywords, string authtoken) { if (keywords == null) throw new ArgumentNullException("keywords"); string authTok = ""; if (authrequired && String.IsNullOrEmpty(authtoken)) { authTok = getAuthToken(); } else authTok = authtoken; find_serviceRequest1 req = new find_serviceRequest1(); req.find_service = new find_service2(); req.find_service.name = new name1[keywords.Length]; for (int i = 0; i < keywords.Length; i++) { req.find_service.name[i] = new name1(); // ignored req.name[i].lang req.find_service.name[i].Value = keywords[i]; } req.find_service.findQualifiers = new string[2]; req.find_service.findQualifiers[0] = uddi_v3_findQualifiers.approximateMatch; req.find_service.findQualifiers[1] = uddi_v3_findQualifiers.caseInsensitiveMatch; if ((authTok != null) && (authrequired)) { req.find_service.authInfo = authTok; } find_serviceResponse1 response = null; try { response = inquiryclient.find_service(req); } catch (Exception ex) { throw new Exception(discoveryError, ex); } get_serviceDetailRequest1 sreq = new get_serviceDetailRequest1(); if (response == null || response.serviceList == null || response.serviceList.serviceInfos == null || response.serviceList.serviceInfos.Length == 0) return new string[] { };//no services returned sreq.get_serviceDetail = new get_serviceDetail2(); sreq.get_serviceDetail.serviceKey = new string[response.serviceList.serviceInfos.Length]; for (int k = 0; k < response.serviceList.serviceInfos.Length; k++) { sreq.get_serviceDetail.serviceKey[k] = response.serviceList.serviceInfos[k].serviceKey; } get_serviceDetailResponse1 sresponse = null; try { sresponse = inquiryclient.get_serviceDetail(sreq); } catch (Exception ex) { throw new Exception(discoveryError, ex); } List<string> ret = new List<string>(); if (sresponse != null && sresponse.serviceDetail != null) foreach (businessService2 bs in sresponse.serviceDetail.businessService) { //if (bs.Signature != null) // if (!VerifySignature(bs)) // throw new Exception(signatureError); if (bs.bindingTemplates != null) foreach (bindingTemplate2 bt in bs.bindingTemplates) { //if (bt.Signature != null) // if (!VerifySignature(bt)) // throw new Exception(signatureError); accessPoint2 ap = bt.Item as accessPoint2; if (ap != null) { string[] apList = parseResults(ap, authTok); if (apList != null) for (int k = 0; k < apList.Length; k++) ret.Add(apList[k]); } } } return ret.ToArray(); }