VBScript/ASP에서 WCF 서비스로 HTTP 게시를 수행하고 응답을 받는 데 사용되는 메시지의 형식을 어떻게 지정합니까?

StackOverflow https://stackoverflow.com/questions/76925

  •  09-06-2019
  •  | 
  •  

문제

게시물을 작성하는 것은 문제가 아닙니다!응답을 받을 수 있도록 메시지 형식을 지정하는 것이 문제입니다.

이상적으로는 메시지를 작성하고 WinHTTP를 사용하여 WCF 서비스(IIS에서 호스팅됨)에 게시를 수행하고 응답을 받을 수 있지만 지금까지는 제대로 작동하는 것을 구성할 수 없었습니다.

누구든지 이 작업을 수행하는 간단한 예를 갖고 있습니까?

2.0 웹 서비스 세계에서는 서비스가 게시물에 응답하도록 설정을 web.config에 넣은 다음 올바른 매개변수를 사용하여 적절한 웹 메소드를 호출하는 것만큼 쉬웠습니다.WCF 세계에는 이에 대한 유사점이 없는 것 같습니다.

현재로서는 소비자(vbscript 끝)를 .NET으로 변환할 수 있는 옵션이 없습니다.

이 시점에서 엔드포인트에서 .NET 3.5에서 지원되는 모든 바인딩을 사용하여 변환할 수 있지만 동시에 WsHttpBinding 또는 BasicHttpBinding을 사용하여 이 작업을 수행할 수 있다면 이에 대한 적절한 대답은 다음과 같습니다. VBScript의 컨텍스트에서 이러한 바인딩 중 하나에 대한 메시지 형식을 지정하는 방법을 설명하거나 그렇게 할 방법이 없으면 그냥 할 수 없다고 말합니다.WebHTTPBinding을 사용하여 이 작업을 수행할 수 있다면 WebInvoke 특성을 이미 조사했고 제대로 작동하는 VBScript에서 WCF로의 테스트를 만들 수 없었기 때문에 이를 수행할 수 있는 방법을 찾지 못한 것입니다.

게시된 데이터 유형이 문자열이고 응답도 문자열이라고 가정합니다.

또한 이 질문은 WinHTTP와 관련이 없습니다.WinHTTP를 사용하여 게시물을 수행하는 방법을 이미 알고 있습니다. WCF 서비스가 응답할 메시지를 구성하는 것이 문제입니다.

WinHTTP 이외의 다른 것을 사용하여 ASP에서 XMLHTTP와 같은 WCF 서비스로 게시를 수행할 수 있지만 여전히 WCF 서비스가 응답할 XML 메시지를 구성하는 문제가 있습니다.나는 이것에 대한 변형을 시도했지만 이것을 실현하기 위해 어떤 종류의 형식을 사용해야 하는지 짐작할 수 없습니다.

이론적으로 모든 WCF 서비스에 필요한 것은 올바른 형식의 메시지라는 것을 알고 있습니다.나는 메시지를 제대로 구성할 수 없으며 일반적으로 모든 사람이 메시지를 보내는 방법에 대해 몇 가지 제안을 하는 반면 모든 사람이 메시지를 보내는 방법에 너무 익숙해졌기 때문에 이 상황에서 적절한 메시지 형식이 무엇인지에 대한 실제 예를 제시하는 사람을 아직 본 적이 없습니다. .NET을 사용하여 메시지를 보내면 해당 컨텍스트에서 모든 작업이 완료됩니다.

도움이 되었습니까?

해결책

한 가지를 지정하지 않았습니다.귀하의 서비스를 어떤 구속력으로 노출하고 있습니까?WsHttpBinding 또는 BasicHttpBinding을 사용하는 경우 간단한 "http 게시"를 수행할 수 없습니다. 왜냐하면 최소한 전체 SOAP 봉투(올바른 SOAP 버전 및 잠재적인 보안 헤더 등 포함)를 포함해야 하기 때문입니다.

.NET 3.5를 사용 중이거나 마이그레이션할 수 있는 경우 이와 같은 시나리오를 지원하기 위해 명시적으로 생성된 새 바인딩이 있습니다. 여기서는 서비스를 SOAP 서비스가 아닌 완전히 REST와 유사한 서비스로 노출시키려는 경우입니다. 간단히 말해서 HTTP를 통한 XML/JSON입니다.이를 WebHttpBinding이라고 합니다.

조정할 수 있는 옵션은 많지만 webHttpBinding을 사용하여 새 끝점을 추가하고 거의 즉시 작동하게 할 가능성이 매우 높습니다.

이는 새로운 프로그래밍 모델에 대한 유리한 시작을 제공할 수 있습니다. http://msdn.microsoft.com/en-us/library/bb412169.aspx

다른 팁

XML 파일을 읽고 내용을 URL에 게시한 다음 결과를 저장하는 Excel 매크로에 대한 코드를 얼마 전에 작성했습니다.

Sub ExportToHTTPPOST()
Dim sURL, sExtraParams
Const ForReading = 1, ForWriting = 2, ForAppending = 3

Set rs = CreateObject("Scripting.FileSystemObject")
Set r = rs.OpenTextFile("y:\test.xml", ForReading)

Set Ws = CreateObject("Scripting.FileSystemObject")
Set w = Ws.OpenTextFile("Y:\test2.xml", ForWriting, True)

Do Until r.AtEndOfStream

    sData = sData & r.readline

Loop

sURL = "http://MyServer/MyWebApp.asp"

sData = "payload=" & sData

    Set objHTTP = New WinHttp.WinHttpRequest

            objHTTP.Open "POST", sURL, False
            objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            objHTTP.send sData
            w.writeline objHTTP.ResponseText
    Set objHTTP = Nothing
    w.Close
    r.Close
End Sub

이것은 ASP에서 백그라운드 HTTP 게시를 수행하기 위해 얻은 가장 간단한 코드입니다.

Set objXML = CreateObject("MSXML2.ServerXMLHTTP.6.0")
objXML.open "POST", url, false
objXML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXML.send("key="& Server.URLEncode(xmlvalue))
Set responseXML = objXML.responseXML
Set objXML = nothing

이를 위해서는 서버에 MSXML 개체가 설치되어 있어야 합니다.저는 이것을 ASP의 XML-RPC 서버/클라이언트를 포함한 모든 종류의 작업에 사용합니다.

편집하다:질문을 다시 읽고 특정 방식으로 설정되어 있으면 도움이 되지 않지만 실제로 웹 서비스에 액세스하는 방법을 찾고 있다면 XML을 올바르게 게시하도록 구성하는 한 작동할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top