Skip to content

Commit 3d7497a

Browse files
committed
支持在Http post/put请求中发送二进制数据
1 parent 8995407 commit 3d7497a

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

libs/core/api/CoreAPI/HttpRequestResult.gd

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class_name HttpRequestResult
66

77

88
var request_url:String = ""
9-
var request_data:String = ""
9+
var request_data = ""
1010
var request_headers:PackedStringArray = []
1111
var result_code:int = 0
1212
var response_code:int = 0
@@ -19,13 +19,17 @@ func get_request_url()->String:
1919
return request_url
2020

2121

22-
## 获取此请求的请求数据字符串
23-
func get_request_data()->String:
22+
## 获取此请求的请求数据
23+
func get_request_data():
2424
return request_data
2525

2626

2727
## 将此请求的请求数据解析为字典并返回
2828
func get_request_data_dic()->Dictionary:
29+
if !(request_data is String):
30+
GuiManager.console_print_error("无法将Http请求数据获取为字典,因为其不是一个字符串!")
31+
return {}
32+
2933
var _json:JSON = JSON.new()
3034
var _error:int = _json.parse(request_data)
3135
var _data:Dictionary = {}

libs/core/modules/http_request_manager.gd

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ func send_http_post_request(url:String,data="",headers:PackedStringArray=PackedS
3535
break
3636
if !find_h:
3737
headers.append("Content-Type: application/json")
38-
elif !(data is String):
38+
elif (!(data is String)) and (!(data is PackedByteArray)):
3939
data = ""
40-
GuiManager.console_print_warning("警告: 传入的请求数据不是一个字典/数组/字符串,因此已将其替换为空字符串(\"\")!")
40+
GuiManager.console_print_warning("警告: 传入的请求数据不是一个字典/数组/字符串/字节数组,因此已将其替换为空字符串(\"\")!")
4141
var node:HttpRequestInstance = HttpRequestInstance.new()
4242
node.request_url = url
4343
node.request_data = data
@@ -46,7 +46,11 @@ func send_http_post_request(url:String,data="",headers:PackedStringArray=PackedS
4646
if timeout > 0:
4747
node.timeout = timeout
4848
add_child(node)
49-
var error:int = node.request(url,headers,true,HTTPClient.METHOD_POST,data)
49+
var error:int
50+
if data is PackedByteArray:
51+
error = node.request_raw(url,headers,true,HTTPClient.METHOD_POST,data)
52+
else:
53+
error = node.request(url,headers,true,HTTPClient.METHOD_POST,data)
5054
if error:
5155
node.queue_free()
5256
GuiManager.console_print_error("在发送Http Post请求到 %s 时发生了一个错误: %s"%[url,error_string(error)])
@@ -72,9 +76,9 @@ func send_http_put_request(url:String,data="",headers:PackedStringArray=PackedSt
7276
break
7377
if !find_h:
7478
headers.append("Content-Type: application/json")
75-
elif !(data is String):
79+
elif (!(data is String)) and (!(data is PackedByteArray)):
7680
data = ""
77-
GuiManager.console_print_warning("警告: 传入的请求数据不是一个字典/数组/字符串,因此已将其替换为空字符串(\"\")!")
81+
GuiManager.console_print_warning("警告: 传入的请求数据不是一个字典/数组/字符串/字节数组,因此已将其替换为空字符串(\"\")!")
7882
var node:HttpRequestInstance = HttpRequestInstance.new()
7983
node.request_url = url
8084
node.request_data = data
@@ -83,7 +87,11 @@ func send_http_put_request(url:String,data="",headers:PackedStringArray=PackedSt
8387
if timeout > 0:
8488
node.timeout = timeout
8589
add_child(node)
86-
var error:int = node.request(url,headers,true,HTTPClient.METHOD_PUT,data)
90+
var error:int
91+
if data is PackedByteArray:
92+
error = node.request_raw(url,headers,true,HTTPClient.METHOD_PUT,data)
93+
else:
94+
error = node.request(url,headers,true,HTTPClient.METHOD_PUT,data)
8795
if error:
8896
node.queue_free()
8997
GuiManager.console_print_error("在发送Http Put请求到 %s 时发生了一个错误: %s"%[url,error_string(error)])
@@ -104,7 +112,7 @@ class HttpRequestInstance:
104112
signal request_finished
105113

106114
var request_url:String = ""
107-
var request_data:String = ""
115+
var request_data = ""
108116
var request_headers:PackedStringArray = []
109117
var result:HttpRequestResult = HttpRequestResult.new()
110118

0 commit comments

Comments
 (0)