我在渡槽dart中创建了一个post请求,它以json作为body参数,我需要将该请求体发送到第三方api,当从第三方api获得响应时,我需要将该响应返回给用户。我已经更新了代码并打印了响应头,它显示http 400(错误请求)
代码如下:
@override
Controller get entryPoint {
String dataRecieved;
var completer = new Completer();
var contents = new StringBuffer();
final router = Router();
router.route("/uploadurl").linkFunction((request) async {
final req = await request.body.decode();
HttpClient client = new HttpClient();
client.badCertificateCallback =
((X509Certificate cert, String host, int port) => true);
var auth = 'Bearer ' +
'eyJ...';
await client
.postUrl(Uri.parse(
'https://<removed>/api/datalake/v3/generateDownloadObjectUrls'))
.then((HttpClientRequest requestSend) {
requestSend.headers
.add("Content-Type", "application/json; charset=UTF-8");
requestSend.headers.add("Authorization", auth);
print(req);
requestSend.write(req);
return requestSend.close();
}).then((HttpClientResponse response) async {
print(await response.contentLength);
var resStream = response.transform(Utf8Decoder());
await for (var data in resStream) {
print('Received data: $data');
}
print(await response.statusCode);
}).catchError((e) {
print("Request error: $e");
});
print(contents);
return Response.ok({"key": dataRecieved});
});
return router;
}
当我向邮递员提出要求时
{
“key”:空
我认为我无法向第三方API发送正确的请求,因为当我从邮递员那里测试第三方API时,它发送了正确的响应
name: proxydl
description: An empty Aqueduct application.
version: 0.0.1
author: stable|kernel <jobs@stablekernel.com>
environment:
sdk: ">=2.0.0 <3.0.0"
dependencies:
aqueduct: ^3.0.0
http: ^0.12.0+2
dev_dependencies:
test: ^1.0.0
aqueduct_test: ^1.0.0
这是我从邮递员那里寄来的邮件:
{
"paths": [
{
"path": "/f1/f2.log"
}
]
}
这是我第一次在服务器端使用Dart的POC。