C # 응용 프로그램 내에서 EORI 유효성 검사 개방형 인터페이스를 호출하려고하지만 아무데도 얻지 못합니다. 나는 사이트를 둘러 보았고 이것을 수행하는 방법에 대한 문서가없는 것 같습니다.
사이트 : http : //ec.europa .eu/taxation_customs/dds2/eos/news/newstar.jsp? Lang = en
WSDL : http://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation? wsdl
새 C # 콘솔 앱을 만들고 서비스 참조로 WSDL을 추가 한 다음 서비스 호출을 시도했지만 다음 예외가 발생했습니다 ...
System.ServiceModel.CommunicationException: 'The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.'
온라인 도구를 숫자와 함께 사용했으며 예상대로 데이터를 반환합니다. http://ec.europa.eu/taxation_customs/dds2/ eos/eori_validation.jsp? Lang = en
다른 사람이 이것으로 운이 있었습니까?
감사합니다
- 답변 # 1
- 답변 # 2
감사합니다 도움을 받으려면 다른 사람이 어려움을 겪고있는 경우 요청을 보내고 보내는 도우미 클래스는 다음과 같습니다.
public class EoriModel { string _url; public EoriModel() { _url = "http://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation"; } public EoriResponseModel ValidateEoriNumber(string number) { if (number == null) { return null; } XmlDocument soapEnvelopeXml = CreateSoapEnvelope(number); HttpWebRequest webRequest = CreateWebRequest(_url); InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest); IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null); asyncResult.AsyncWaitHandle.WaitOne(); string response; using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult)) { using (StreamReader rd = new StreamReader(webResponse.GetResponseStream())) { response = rd.ReadToEnd(); } } int startPos = response.IndexOf("<return>"); int lastPos = response.LastIndexOf("</return>") - startPos + 9; string responseFormatted = response.Substring(startPos, lastPos); XmlSerializer serializer = new XmlSerializer(typeof(EoriResponseModel)); EoriResponseModel result; using (TextReader reader = new StringReader(responseFormatted)) { result = (EoriResponseModel)serializer.Deserialize(reader); } return result; } private static HttpWebRequest CreateWebRequest(string url) { HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.ContentType = "text/xml;charset=\"utf-8\""; webRequest.Accept = "text/xml"; webRequest.Method = "POST"; return webRequest; } private static XmlDocument CreateSoapEnvelope(string number) { XmlDocument soapEnvelopeDocument = new XmlDocument(); StringBuilder xmlBuilder = new StringBuilder(); xmlBuilder.AppendFormat("<soap:Envelope xmlns:soap={0} >", "'http://schemas.xmlsoap.org/soap/envelope/'"); xmlBuilder.Append("<soap:Body>"); xmlBuilder.AppendFormat("<ev:validateEORI xmlns:ev={0} >", "'http://eori.ws.eos.dds.s/'"); xmlBuilder.AppendFormat("<ev:eori>{0}</ev:eori>", number); xmlBuilder.Append("</ev:validateEORI>"); xmlBuilder.Append("</soap:Body> "); xmlBuilder.Append("</soap:Envelope> "); soapEnvelopeDocument.LoadXml(xmlBuilder.ToString()); return soapEnvelopeDocument; } private static void InsertSoapEnvelopeIntoWebRequest(XmlDocument soapEnvelopeXml, HttpWebRequest webRequest) { using (Stream stream = webRequest.GetRequestStream()) { soapEnvelopeXml.Save(stream); } } }
결과를 파싱하는 데 사용되는 주석이있는 클래스
[XmlRoot(ElementName = "return")] public class EoriResponseModel { [XmlElement(ElementName = "requestDate")] public string RequestDate { get; set; } [XmlElement(ElementName = "result")] public List<Result> Result { get; set; } } [XmlRoot(ElementName = "result")] public class Result { [XmlElement(ElementName = "eori")] public string Eori { get; set; } [XmlElement(ElementName = "status")] public string Status { get; set; } [XmlElement(ElementName = "statusDescr")] public string StatusDescr { get; set; } [XmlElement(ElementName = "name")] public string Name { get; set; } [XmlElement(ElementName = "street")] public string Street { get; set; } [XmlElement(ElementName = "postalCode")] public string PostalCode { get; set; } [XmlElement(ElementName = "city")] public string City { get; set; } [XmlElement(ElementName = "country")] public string Country { get; set; } }
관련 자료
- java - Spring RESTful 웹 서비스 문제
- c# - ASPNET MVC 앱에서 ASPNET Web API REST 서비스를 호출 할 때 HTTPClient 오류
- c# - MVC 앱을 Azure App Service에 배포 할 때 POSTS 관련 문제
- javascript - Vue 템플릿에서 서비스 메서드 호출
- Spring Boot에서 OAuth2로 Spring REST 서비스 보안 문제
- networking - 다른 도커 컨테이너의 다른 서비스에서 실행되는 웹 서비스를 호출하는 도커 컨테이너에서 실행되는 서비스
- angular - 다른 서비스를 호출하는 서비스, 구현 질문
- json - jenkins 작업을 원격으로 호출하는 동안 매개 변수 전달 문제
- angular - 토큰 인터셉터 및 인증 가드에서 삽입 된 서비스의 타이밍 문제
- ionic4 - 서비스 이온 앱 CORB를 호출하는 문제에 직면
- google cloud platform - gcp에서 operationsget을 호출하면 "필드 [이름]에 [잘못된 작업 이름]에 문제가 있습니다"가 발생합니다
- javascript - jsPDF, Angular에서 동일한 서비스의 메소드 호출이 작동하지 않습니다
- c# : Invision Api 포럼 /포럼
- API를 사용하여 c# 창에서 데이터 저장
- c#의 foreach 루프 내에서 API 호출
- c# : 미디 입력이 미디 출력에 연결되어 있는지 어떻게 알 수 있습니까?
- 브라우저의 내부 오류 500 Asp.net 코어 3.1 웹 API
- python : Django에서 HTML 페이지를 렌더링 할 수 없습니다.
- 내 MVC 웹 API에서 내부 서버 오류를 일으킬 수있는 원인 : 500
- c# .net 핵심 API 프로젝트에서 메일 pdf 문서를 읽고 업데이트하고 보내는 방법
- c# : .Net Core API (POST)-본문에 들어오는 페이로드 읽기
EORI 유효성 검사 방법의 정의를 열면 열리는 Reference.cs 파일에 깊은 URI를 Google에 게시하면이 페이지의 누군가 https://www.codeproject.com/ Questions/1075553/Soap-Message-Format-Issue-while-accessing-webservi에 동일한 문제가 있습니다.
그 페이지에서 그는 자신이 쿼리를 만드는 데 사용하는이 샘플 코드를 인용합니다.
Postman에서이 코드를 사용해보고 결과를 즐기십시오. : D
그의 쿼리는 궁극적으로 그가 작성한 C # 코드가 유효한 XML을 생성하지 않지만 최소한이 XML을 통해 테스트/개발 프로세스를위한 API 결과를 얻을 수 있습니다.