Kode VBA apa yang diperlukan untuk melakukan POST HTTP dari spreadsheet Excel?
135
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")
Atau, untuk kontrol yang lebih besar atas permintaan HTTP yang dapat Anda gunakan WinHttp.WinHttpRequest.5.1
sebagai ganti MSXML2.ServerXMLHTTP
.
objHTTP.responseText
.ByRef
atau tidak. Itu sebabnya menggunakannya dengan variabel objek tipe yang tidak memiliki anggota default menyebabkan kesalahan run-time; dan menggunakannya pada objek yang memang memiliki anggota default, melewati nilai anggota default itu bukan objek yang sebenarnya.Jika Anda membutuhkannya untuk bekerja di Mac dan Windows, Anda dapat menggunakan QueryTables:
Catatan:
Untuk detail lebih lanjut, Anda dapat melihat ringkasan lengkap saya tentang " menggunakan layanan web dari Excel ."
sumber
Selain anwser dari Bill the Lizard :
Sebagian besar backends mengurai data posting mentah. Dalam PHP misalnya, Anda akan memiliki array
$_POST
di mana masing-masing variabel dalam data posting akan disimpan. Dalam hal ini Anda harus menggunakan tajuk tambahan"Content-type: application/x-www-form-urlencoded"
:Kalau tidak, Anda harus membaca data posting mentah pada variabel
"$HTTP_RAW_POST_DATA"
.sumber
Anda dapat menggunakan
ServerXMLHTTP
dalam proyek VBA dengan menambahkan referensi keMSXML
.(dari Referensi MSXML dalam Proyek VBA )
The dokumentasi ServerXMLHTTP MSDN memiliki rincian lengkap tentang semua properti dan metode dari ServerXMLHTTP.
Singkatnya, pada dasarnya kerjanya seperti ini:
sumber
Untuk melengkapi respons pengguna lain:
Untuk ini saya telah membuat objek "WinHttp.WinHttpRequest.5.1" .
Kirim permintaan pos dengan beberapa data dari Excel menggunakan VBA:
Kirim permintaan dapatkan dengan otentikasi token dari Excel menggunakan VBA:
sumber
TCRequestItem Object
, Anda dapat membacanya seperti:TCRequestItem.ResponseText
setelah melakukanTCRequestItem.send
Saya melakukan ini sebelum menggunakan perpustakaan MSXML dan kemudian menggunakan objek XMLHttpRequest, lihat di sini .
sumber