Microsoft의 WCFTestClient.exe를 사용하여 호출 할 수있는 웹 서비스가 있습니다. 그러나 Excel 2013에서 웹 서비스를 호출하기 위해 매크로를 만들려고해도 작동하지 않습니다.Excel 2013에서 웹 서비스를 사용하는 방법
오류는 아니지만 실제로 웹 서버에서 메서드 (RunScript)를 실행하지는 않습니다. 내가 성공적으로 웹 서비스를 소비 한 다른 클라이언트를 만들었습니다 때문에이는 웹 서비스의 작동하는
Private Sub web()
Dim sURL As String
Dim sEnv As String
Dim objHTTP As Object
Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
sURL = "http://testserver:9001/TestService"
On Error GoTo ErrorLabel
sEnv = sEnv & "<s:Envelope xmlns:a=""http://www.w3.org/2005/08/addressing"" xmlns:s=""http://www.w3.org/2003/05/soap-envelope"" > "
sEnv = sEnv & " <s:Header>"
sEnv = sEnv & " <a:Action s:mustUnderstand=""1"">http://tempuri.org/TestService/RunScript</a:Action>"
sEnv = sEnv & " <a:MessageID>urn:uuid:9405af92-1f5b-4ead-87</a:MessageID> <a:ReplyTo>"
sEnv = sEnv & " <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>"
sEnv = sEnv & " </a:ReplyTo>"
sEnv = sEnv & " </s:Header>"
sEnv = sEnv & " <s:Body>"
sEnv = sEnv & " <RunScript xmlns=""http://tempuri.org/""/> "
sEnv = sEnv & " </s:Body>"
sEnv = sEnv & "</s:Envelope>"
With objHTTP
.Open "GET", sURL, False
.setRequestHeader "Content-Type", "text/xml"
.send sEnv
End With
Set objHTTP = Nothing
ExitLabel:
'Clean-up code, if any, goes here
Exit Sub
ErrorLabel:
'Error-handling code goes here
Resume ExitLabel
End Sub
:
여기 내 코드입니다. 이 Excel 2013 매크로로 무엇을 잘못 했습니까?
** 편집 - WsHttpBinding과 사용하던 위, 나는은 BasicHttpBinding을 사용하도록 전환 :
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/TestService/RunScript</Action>
</s:Header>
<s:Body>
<RunScript xmlns="http://tempuri.org/" />
</s:Body>
</s:Envelope>
내가 피들러에서 그것을 실행하지만, 결국 504 얻을 - 게이트웨이 timout을. WCFClient를 실행하고 서비스를 추가 할뿐만 아니라 웹 참조를 추가하여 작은 콘솔 앱을 작성하여 소비 할 수 있습니다.
내가 사용중인 soap xml은 WCFClient 도구의 정확한 값입니다.
미리 감사드립니다.
'. 열거 ", sURL, 거짓"? 서비스 요청이 'GET'요청을 기대합니까? 아마도''POST ", sURL, False'를 열 것인가? –
POST를 시도하면 "400"오류가 발생합니다. – EriqaBana