This commit is contained in:
Yeuoly
2024-03-11 19:51:31 +08:00
parent 1a57951d72
commit 2008986f83
5 changed files with 197 additions and 20 deletions

View File

@ -43,6 +43,7 @@ class HttpExecutor:
self.params = {}
self.headers = {}
self.body = None
self.files = None
# init template
self._init_template(node_data, variables)
@ -248,10 +249,24 @@ class HttpExecutor:
server_url += f'?{urlencode(self.params)}'
raw_request = f'{self.method.upper()} {server_url} HTTP/1.1\n'
for k, v in self.headers.items():
headers = self._assembling_headers()
for k, v in headers.items():
raw_request += f'{k}: {v}\n'
raw_request += '\n'
raw_request += self.body or ''
# if files, use multipart/form-data with boundary
if self.files:
boundary = '----WebKitFormBoundary7MA4YWxkTrZu0gW'
raw_request = f'--{boundary}\n' + raw_request
for k, v in self.files.items():
raw_request += f'Content-Disposition: form-data; name="{k}"; filename="{v[0]}"\n'
raw_request += f'Content-Type: {v[1]}\n\n'
raw_request += v[1] + '\n'
raw_request += f'--{boundary}\n'
raw_request += '--\n'
else:
raw_request += self.body or ''
return raw_request

View File

@ -28,13 +28,13 @@ class HttpRequestNode(BaseNode):
# invoke http executor
response = http_executor.invoke()
except Exception as e:
import traceback
print(traceback.format_exc())
return NodeRunResult(
status=WorkflowNodeExecutionStatus.FAILED,
inputs=variables,
error=str(e),
process_data=http_executor.to_raw_request()
process_data={
'request': http_executor.to_raw_request()
}
)
return NodeRunResult(
@ -45,7 +45,9 @@ class HttpRequestNode(BaseNode):
'body': response,
'headers': response.headers
},
process_data=http_executor.to_raw_request()
process_data={
'request': http_executor.to_raw_request(),
}
)