Página 1 de 1

Enviar arq json como form-data usando MSXML

Enviado: 24 Jun 2024 09:57
por gilbertosilverio
Ola Amigos,

Como faço para enviar um arquivo json em form-data pelo MSXML, e possivel?

Passaram esse documentação, mais nao sei como fazer.
curl
--location "https://datareception.solutions.iqvia.c ... ut1/upload" \
--header "Content-Type: multipart/form-data" \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9[...]" \
--form =@"C:\file.json" -v

Tentei assim, mais da erro

Código: Selecionar todos

   oHttps:= win_OleCreateObject( "MSXML2.SERVERXMLHTTP.6.0" )

   cURL:= 'https://datareception.solutions.iqvia.com/api/v1/layout1/upload'

   oHttps:Open( "POST" , cURL, .F. )

   oHttps:SetRequestHeader( "Content-Type",    "text/json" )
   oHttps:SetRequestHeader( "Host",            "https://datareception.solutions.iqvia.com" )
   oHttps:SetRequestHeader( "Authorization",   cENTRA     )

   TRY
      oHttps:send(cJson)
      oHttps:WaitForResponse( 50000 )
   CATCH
      HWG_MSGSTOP([Erro de comunicacao, por favor verifique...],[Aviso do sistema])
      RETURN NIL
   END

   hwg_msginfo([1 ]+str(oHttps:readyState))
   hwg_msginfo([2 ]+str(oHttps:Status))
   hwg_msginfo([3 ]+oHttps:StatusText)

   IF oHttps:status <> 200 // diferente de aprovado
      hwg_MsgStop( Alltrim(Str(oHttps:status)) +" - "+ Alltrim(oHttps:ResponseText) , "Erro na requisição")
   ENDIF

   oHttps:=nil

Agradeço a ajuda...

Enviar arq json como form-data usando MSXML

Enviado: 24 Jun 2024 16:30
por gilbertosilverio
Ola Amigos,

Consegui enviar via Soapui, mais nao consigo enviar via MSXML...

No soapui, fica assim, como devo parametrizar para conseguir enviar.

Nao consigo entender como anexar, como o soap faz via attachamnet

Tentei dessa maneira, mais não vai.

Código: Selecionar todos

   cTXT:='c:\json_teste.zip'

   oHttps:= win_OleCreateObject( "MSXML2.SERVERXMLHTTP.6.0" )

   cURL:= 'https://datareception.solutions.iqvia.com/api/v1/layout1/upload?file1=file%3Ajson_teste.zip'

   oHttps:Open( "POST" , cURL, .F. )

   oHttps:SetRequestHeader( "Accept-Encoding", [gzip,deflate] )
   oHttps:SetRequestHeader( "Authorization",   cENTRA     )
   oHttps:SetRequestHeader( "Content-Type" ,   [multipart/form-data; boundary="----=_Part_0_81802232.1719254354119"] )
   oHttps:SetRequestHeader( "Host",            [https://datareception.solutions.iqvia.com] )

   TRY
      oHttps:send(cTXT)
      oHttps:WaitForResponse( 50000 )
   CATCH
      oBAR:CLOSE()
      HWG_MSGSTOP([Erro de comunicacao, por favor verifique...],[Aviso do sistema])
      RETURN NIL
   END


Algum dica?

Enviar arq json como form-data usando MSXML

Enviado: 27 Jun 2024 18:45
por toninhofwi
eu uso a chilkat pra isso, você pode gerar o curl foxpro e adaptar o resultado pro harbour o que é muito simples:

https://tools.chilkat.io/curlHttp.cshtml#generatedCode


---cut---

LOCAL loHttp
LOCAL lnSuccess
LOCAL loReq
LOCAL loResp

* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loHttp = CreateObject('Chilkat_9_5_0.Http')

loReq = CreateObject('Chilkat_9_5_0.HttpRequest')
loReq.HttpVerb = "POST"
loReq.Path = "/api/v1/layout1/upload"
loReq.ContentType = "multipart/form-data"
loReq.AddParam("","")

loReq.AddHeader("Authorization","Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9[...]")

loResp = loHttp.SynchronousRequest("datareception.solutions.iqvia.com",443,1,loReq)
IF (loHttp.LastMethodSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loReq
CANCEL
ENDIF

? STR(loResp.StatusCode)
? loResp.BodyStr
RELEASE loResp

RELEASE loHttp
RELEASE loReq