【发布时间】:2020-05-06 22:51:11
【问题描述】:
我正在通过我的颤振应用程序对我的服务器进行 api 调用,但是我不断收到 503 错误,说我的令牌不正确。但是,我已经验证它是正确的。我也可以通过 Postman 进行 api 调用。
通过邮递员我可以下订单没问题:
但是当我通过我的应用程序进行相同的 api 调用时:
Future<dynamic> createOrder(
String stripeToken, accessToken, restaurantId, address, order) async {
var url = 'https://buddies-8269.herokuapp.com/api/customer/order/add/';
// print(url);
final Map<String, dynamic> createOrder = {
'access_token': accessToken,
'stripe_token': stripeToken,
'restaurant_id': restaurantId,
'address': address,
'order_details': order,
};
print(json.encode(createOrder));
http
.post(url,
headers: {"Content-Type": "application/json"},
body: json.encode(createOrder))
.then((http.Response response) {
if (response.statusCode == 200) {
final Map<String, dynamic> responseData = json.decode(response.body);
print(responseData);
print('Response body: ${response.body}');
print(response.request);
} else {
print(response.statusCode);
}
});
}
调用中发送的数据是:
{"access_token":"ITgL7UElbR5GU7oeerVEr3UZKiG5AV","stripe_token":"tok_visa_debit","restaurant_id":10,"address":"55 Glenwood, brooklyn NY, 32133","order_details":[{"product_size":47,"quantity":2}]}
我在应用程序中收到此错误:
oauth2_provider.models.DoesNotExist: AccessToken matching query does not exist.
sock=backend at=error code=H18 desc="Server Request Interrupted" method=POST path="/api/customer/order/add/" host=buddies-8269.herokuapp.com
我不明白为什么我可以通过邮递员拨打电话,但不能通过应用程序拨打电话。
【问题讨论】:
-
删除内容类型标头,只使用
body: createOrder。在邮递员中,您没有将表单编码为 JSON,因此在 Dart 中也这样做。 -
我收到一个转换错误,上面写着“(类型转换中的类型'int'不是'String'类型的子类型)”
-
将 'restaurant_id': restaurantId 更改为 'restaurant_id': restaurantId.toString()
-
那行不通,因为 order_detail 是一个列表。那就有问题了
-
您需要将其转换为邮递员屏幕截图中显示的字符串