2012-05-01 4 views
1

XML 문자열 데이터를 원격 WCF 서비스에 게시하고 결과를 추출하는 꽤 표준적인 함수가 있습니다. 그것은 잘 작동하지만, "큰"데이터의 양을 확장하는 데 실패 (이 경우 138킬로바이트)많은 양의 데이터가있는 POST 요청을 VB6에서 실행하지 못했습니다.

' performs a HTTP POST and returns the resulting message content 
Function HttpPost(sUrl As String, sSOAPAction As String, sContent As String) As String 
    Dim oHttp As Object 
    'Set oHttp = CreateObject("Microsoft.XMLHTTP") 
    Set oHttp = CreateObject("MSXML2.XMLHTTP.6.0") 
    oHttp.open "POST", sUrl, False 
    oHttp.setRequestHeader "SOAPAction", """http://conducive.com.au/IXpacManagement/" & sSOAPAction & """" 
    oHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
    oHttp.setRequestHeader "Content-Length", Len(sContent) 
    oHttp.send Str(sContent) 

    If oHttp.status = 200 Then 
    HttpPost = oHttp.responseText 
    Else 
    MsgBox "An error (" & LTrim(Str(oHttp.status)) & ") has occurred connecting to the server." 
    HttpPost = "" 
    End If 

    Set oHttp = Nothing 

End Function 

내가 error 7 out of memory를 얻을 내가 Microsoft.XMLHTTP를 사용하는 경우.
MSXML2.XMLHTTP.6.0을 사용할 때 object doesn't support this property or method이 표시됩니다.
어느 경우 든 1000 자 미만의 작은 문자열을 보내면 완벽하게 작동합니다. oHttp.send(sContent)를 사용

  • : : 심지어 작은 게시물 Invalid procedure call or argument Runtime error 5 실패


    는 여기에 다른 문자열을 보내는 방법을 시도 할 때 내가 무엇을 얻을.

  • 사용 oHttp.send sContent : 작은 POST 일지라도 Invalid procedure call or argument Runtime error 5으로 실패합니다. 결국 oHttp.send CStr(sContent)에서

일했다. 내가 잃어 버렸기 때문에 제안 해 주셔서 감사합니다.

+0

vb 태그가 정리 중이라는 사실에 주목하기 위해 댓글을 달았습니다 (커뮤니티 게시판 참조). 4 가지 특정 변형 중 하나를 사용하여 교체해야합니다. 특히 후속 조치에 대한 도움을 받으십시오! – Zulaxia

+0

중간 바이트 배열을 사용해보십시오 :'baBuffer = StrConv (...) : .send CVar (baBuffer)' – wqw

답변

2

sContent 주변에서 Str()을 꺼내서 괄호를 사용하여 값으로 전달하십시오.

oHttp.send (sContent)

또는 적어도에서는 CStr()를 사용하는 것이 실패 - str을()는 숫자를 문자열로 변환 할 예정이다.

+0

괄호를 사용할 이유가 없거나 필요가 없습니다. 큰 문자열의 두 번째 복사본을 만듭니다. – Bob77

+0

@Bob :'send' 메쏘드는 버르 크크를 가지고 있는데, VT_BYREF 매개 변수를 "좋아"하지 않습니다. 후기 바인딩이라고 할 때 가장 눈에.니다. – wqw

+0

XMLHTTP가 나중에 바인딩 된 경우에만 * 만 * 보았습니다. 그러나 VB6 이후 스크립트 또는 뭔가 초기에 실제로 원하는 바인딩 어쨌든. 당신이하지 않으면 당신은 내가 알 수있는 한 데이터 복사본을 만드는 것이 운명입니다. – Bob77

관련 문제