Error: The argument type 'String' can't be assigned to the parameter type 'Uri'. - 'Uri' is from 'dart:core'
Error: The argument type 'String' can't be assigned to the parameter type 'Uri'. - 'Uri' is from 'dart:core'
我有这个错误的问题:
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:inboxed/model/login_model.dart';
class APIService {
Future<LoginResponseModel> login(LoginRequestModel requestModel) async {
String url = 'https://localhost:3000/api/users/session';
final response = await http.post(url, body: requestModel.toJson());
if (response.statusCode == 200 || response.statusCode == 400) {
return LoginResponseModel.fromJson(
json.decode(response.body),
);
} else {
throw Exception('Failed to load Data');
}
}
}
调试控制台:
正在调试模式下在 IA 模拟器上的 AOSP 上启动 lib\main.dart...
lib/api/api_service.dart:10:38: 错误:参数类型 'String' 无法分配给参数类型 'Uri'.
Uri' 来自 'dart:core'。
最终回复 = await http.post(url, body: requestModel.toJson());
失败:构建失败,出现异常。
在哪里:
脚本 'C:\development\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:991
出了什么问题:
任务 ':app:compileFlutterBuildDebug' 执行失败。
进程“command 'C:\development\flutter\bin\flutter.bat'”以非零退出值 1
完成
尝试:
运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。 运行 使用 --scan 以获得完整的见解。
获取更多帮助
38 秒内构建失败
异常:Gradle 任务 assembleDebug 失败,退出代码为 1
退出 (sigterm)
需要使用以下代码解析您的 url 并传递此代码而不是 url 字符串;
Uri.parse(url)
使用示例代码 ;
String url = "https://sandbox-api.iyzipay.com/payment/bin/check";
Map body = {"locale":"tr","conversationId":"123456ayx5","binNumber":"$binNumber"} ;
//String
String requeststr = "locale=tr,conversationId=123456ayx5,binNumber=$binNumber";
String pkistring = v1hashing(requeststr);
HttpClient httpClient = new HttpClient();
HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));
//headers
request.headers.set('Accept' , 'application/json');
request.headers.set('Content-Type' , 'application/json');
//body
request.add(utf8.encode(json.encode(body)));
//response
HttpClientResponse response = await request.close();
print(response.statusCode);
String reply = await response.transform(utf8.decoder).join();
Map responseMap = json.decode(reply);
httpClient.close();
print(responseMap);
只需用 Uri 解析字符串 url....
请参阅下面的示例
String url = "your_endpoint_here";
final response = await http.post(Uri.parse(url), body: requestModel.toJson());
我有这个错误的问题:
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:inboxed/model/login_model.dart';
class APIService {
Future<LoginResponseModel> login(LoginRequestModel requestModel) async {
String url = 'https://localhost:3000/api/users/session';
final response = await http.post(url, body: requestModel.toJson());
if (response.statusCode == 200 || response.statusCode == 400) {
return LoginResponseModel.fromJson(
json.decode(response.body),
);
} else {
throw Exception('Failed to load Data');
}
}
}
调试控制台:
正在调试模式下在 IA 模拟器上的 AOSP 上启动 lib\main.dart...
lib/api/api_service.dart:10:38: 错误:参数类型 'String' 无法分配给参数类型 'Uri'.
Uri' 来自 'dart:core'。 最终回复 = await http.post(url, body: requestModel.toJson());
失败:构建失败,出现异常。
在哪里: 脚本 'C:\development\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:991
出了什么问题: 任务 ':app:compileFlutterBuildDebug' 执行失败。 进程“command 'C:\development\flutter\bin\flutter.bat'”以非零退出值 1
完成尝试: 运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。 运行 使用 --scan 以获得完整的见解。
获取更多帮助38 秒内构建失败 异常:Gradle 任务 assembleDebug 失败,退出代码为 1 退出 (sigterm)
需要使用以下代码解析您的 url 并传递此代码而不是 url 字符串;
Uri.parse(url)
使用示例代码 ;
String url = "https://sandbox-api.iyzipay.com/payment/bin/check";
Map body = {"locale":"tr","conversationId":"123456ayx5","binNumber":"$binNumber"} ;
//String
String requeststr = "locale=tr,conversationId=123456ayx5,binNumber=$binNumber";
String pkistring = v1hashing(requeststr);
HttpClient httpClient = new HttpClient();
HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));
//headers
request.headers.set('Accept' , 'application/json');
request.headers.set('Content-Type' , 'application/json');
//body
request.add(utf8.encode(json.encode(body)));
//response
HttpClientResponse response = await request.close();
print(response.statusCode);
String reply = await response.transform(utf8.decoder).join();
Map responseMap = json.decode(reply);
httpClient.close();
print(responseMap);
只需用 Uri 解析字符串 url.... 请参阅下面的示例
String url = "your_endpoint_here";
final response = await http.post(Uri.parse(url), body: requestModel.toJson());