我收到此错误
I/flutter (26554): FormatException: Unexpected character (at character 1)
I/flutter (26554): <html>
I/flutter (26554): ^
尝试向https://api.flutterwave.com/v3/transfers
发出POST请求时
有效载荷如下所示(内部 Postman )
{
"amount": 500,
"narration": "Test Int'l bank transfers",
"currency": "USD",
"beneficiary_name": "Mark Cuban",
"meta": [
{
"AccountNumber": "09182972BH",
"RoutingNumber": "0000000002993",
"SwiftCode": "ABJG190",
"BankName": "BANK OF AMERICA, N.A., SAN FRANCISCO, CA",
"BeneficiaryName": "Mark Cuban",
"BeneficiaryAddress": "San Francisco, 4 Newton",
"BeneficiaryCountry": "US"
}
]
}
它给了我这个响应(在Postman内部测试,结果正确)
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 396427,
"account_number": "FOREIGN-ACCOUNT",
"bank_code": "FOREIGN-BANK",
"full_name": "Mark Cuban",
"created_at": "2023-03-10T20:30:52.000Z",
"currency": "USD",
"amount": 500,
"fee": 40,
"status": "NEW",
"reference": "ebce2909fc3a57a7",
"meta": [
{
"MerchantName": "TestLucas LLC",
"SenderCountry": "NG",
"AccountNumber": "FOREIGN-ACCOUNT",
"RoutingNumber": "FOREIGN-BANK",
"Sender": "TestLucas LLC",
"Address": null,
"MobileNumber": "23480000000000"
}
],
"narration": "Test Int'l bank transfers",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
但是当我在flutter代码中测试时,它给我这个错误
I/flutter (26554): FormatException: Unexpected character (at character 1)
I/flutter (26554): <html>
I/flutter (26554): ^
请查看我的Flutter代码
class UsTransferProvider extends ChangeNotifier {
final Future<SharedPreferences> _pref = SharedPreferences.getInstance();
bool _isLoading = false;
String _reqMessage = '';
bool get isLoading => _isLoading;
String get reqMessage => _reqMessage;
void usTransfer({
required String amount,
required String narration,
required String currency,
required String bankName,
required String accountNum,
required String beneficiary_name,
required String routingNumber,
required String swiftCode,
required String beneficiaryCountry,
required String beneficiaryAddress,
}) async {
_isLoading = true;
notifyListeners();
String url = 'https://api.flutterwave.com/v3/transfers';
String tokenUser = "FLWSECK_TEST-153740d351951b5f6d5ae8b903e0c467-X";
final body = {
"amount": amount,
"narration": narration,
"currency": currency,
"beneficiary_name": beneficiary_name,
"meta": [
{
"AccountNumber": accountNum,
"RoutingNumber": routingNumber,
"SwiftCode": swiftCode,
"BankName": bankName,
"BeneficiaryName": beneficiary_name,
"BeneficiaryAddress": beneficiaryAddress,
"BeneficiaryCountry": beneficiaryCountry,
}
]
};
print(body);
Map<String, String> headers = {
'Content-Type': 'application/json',
'Charset': 'utf-8',
'Authorization': 'Bearer $tokenUser'
};
print(tokenUser);
//making http request
http.Response req = await http.post(Uri.parse(url),
headers: headers, body: json.encode(body));
try {
if (req.statusCode == 200 || req.statusCode == 201) {
print(req.body);
_isLoading = false;
_reqMessage = "Transfer Successful";
pushNotification(
'Money Transfer Complete', 'Successfully sent $amount');
notifyListeners();
} else {
final res = json.decode(req.body);
_isLoading = false;
_reqMessage = '';
notifyListeners();
}
} on SocketException catch (_) {
_isLoading = false;
_reqMessage = 'No Internet Connection';
notifyListeners();
print(_);
} catch (e) {
_isLoading = false;
_reqMessage = 'Check your Internet connection';
notifyListeners();
print(e);
}
}
void clear() {
_reqMessage = '';
notifyListeners();
}
}
调用它的代码是这样的
Consumer<UsTransferProvider>(builder: (context, auth, child) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (auth.reqMessage != '') {
showMessage(
message: auth.reqMessage,
context: context,
);
}
auth.clear();
});
return customButton(
tap: () {
if (amountController.text.isEmpty ||
narrationController.text.isEmpty ||
accountController.text.isEmpty ||
routingController.text.isEmpty ||
beneficiaryAddressController.text.isEmpty ||
beneficiaryCountryController.text.isEmpty ||
beneficiaryNameController.text.isEmpty ||
swifcodeController.text.isEmpty ||
_mybank.toString().isEmpty) {
showMessage(
message: "All field is required",
context: context,
);
} else {
auth.usTransfer(
amount: amountController.text,
narration: narrationController.text,
currency: selectCurrency,
bankName: _mybank.toString().trim(),
accountNum: accountController.text,
beneficiary_name: beneficiaryNameController.text,
routingNumber: routingController.text,
swiftCode: swifcodeController.text,
beneficiaryCountry: beneficiaryCountryController.text,
beneficiaryAddress: beneficiaryAddressController.text);
}
},
text: 'Send Money',
textColor: white,
color: primaryColor,
status: auth.isLoading,
borderColor: primaryColor);
})
我该怎么走?
编辑
如您所要求,我的 Postman 要求如下
1条答案
按热度按时间n3schb8v1#
首先,您应该确保此错误仅由于此金额变量而发生,您可以给予硬编码值以检查所有其他参数是否正确传递。如果金额为
int
,如amount=500
(此处我认为500是临时整数),则您可以传递如果amount是
"500"
等字符串中整数,则可以遵循以下方法那么