首页 > 解决方案 > lua中的多部分帖子

问题描述

我正在尝试在 lua 中为以下内容创建一个多部分的帖子

POST /CMServiceAPI/Record HTTP/1.1
Host: xx.xx.xx.xx
Accept: application/json
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Authorization: Basic ddddzxwsdlj3247982323lkjklsdsdlkjsdj==
cache-control: no-cache
Postman-Token: f4442f26-fe43-4ba6-afcc-046ddccbb1bd

Content-Disposition: form-data; name="RecordType"

Document

Content-Disposition: form-data; name="RecordTitle"

Vinay test 2341

Content-Disposition: form-data; name="properties"

RecordNumber
------WebKitFormBoundary7MA4YWxkTrZu0gW--

我将如何在 lua 中创建它?

标签: lua

解决方案


我需要安装luasocket,希望这对你有用:

local http = require('socket.http')
local ltn12 = require('socket.ltn12')

local body = {}
local boundary = '----WebKitFormBoundary7MA4YWxkTrZu0gW'
local payload = string.format([[
Content-Disposition: form-data; name="RecordType"

%s

Content-Disposition: form-data; name="RecordTitle"

%s

Content-Disposition: form-data; name="properties"

%s
%s
]], 'Document', 'Vinay test 2341', 'RecordNumber', boundary)

local res, code, headers = http.request({
  url = 'http://youservernamehere/CMServiceAPI/Record',
  method = 'POST',
  headers = {
    ['Content-Type'] = 'multipart/form-data; boundary='..boundary,
    ['Postman-Token'] = 'f4442f26-fe43-4ba6-afcc-046ddccbb1bd',
    Authorization = 'Basic ddddzxwsdlj3247982323lkjklsdsdlkjsdj==',
    Accept = 'application/json'
  },
  source = ltn12.source.string(payload),
  sink = ltn12.sink.table(body)
})

print(res)
print(code)

if type(headers) == 'table' then
  for k, v in pairs(headers) do 
    print(k, v)
  end
end

print('Response body:')
if type(body) == 'table' then
  print(table.concat(body))
else
  print('Not a table:', type(body))
end

这段代码未经测试,但我希望你明白:)


推荐阅读