Flutter 颤振-发出web请求
我想知道在解析来自flatter的JSON请求时,是否有一种格式化特殊字符的方法。我已经测试了http请求,如下所示:Flutter 颤振-发出web请求,flutter,dart,Flutter,Dart,我想知道在解析来自flatter的JSON请求时,是否有一种格式化特殊字符的方法。我已经测试了http请求,如下所示: void curlRequest() async { String urlRequest = "http://my.web.url/webservice/rest/server.php?wstoken=my_token&moodlewsrestformat=json&wsfunction=core_user_create_users&
void curlRequest() async
{
String urlRequest = "http://my.web.url/webservice/rest/server.php?wstoken=my_token&moodlewsrestformat=json&wsfunction=core_user_create_users&users[0][username]=test_user_4&users[0][firstname]=John&users[0][lastname]=Doe&users[0][email]=john.doe@gmail.com&users[0][password]=Johns_Password";
http.post(urlRequest, headers: {'Content-type': 'application/json; charset=utf-8'}).then((response){
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
});
}
我得到以下回应:
http://my.web.url/webservice/rest/server.php?wstoken=my_token&moodlewsrestformat=json&wsfunction=core_user_create_users&users%5B0%5D%5Busername%5D=test_user_4&users%5B0%5D%5Bfirstname%5D=John&users%5B0%5D%5Blastname%5D=Doe&users%5B0%5D%5Bemail%5D=john.doe@gmail.com和用户%5B0%5D%5Bpassword%5D=Johns_Password&i=1
由于使用了特殊字符,请求无效。如何发出请求以使特殊字符也得到正确处理?在http restful请求中,
http GET
请求必须是url编码的,这意味着大多数特殊字符必须以Web服务器可以理解的方式编码
因此,必须将加号(+)或问号(?)等字符替换为URL编码的等效字符(%2b表示加号,%3F表示问号),反之亦然,以便进行解码
可以在网上找到几个URL编码器,例如
在Dart中,您可以使用Uri.encodeFull()
对字符串进行编码,并使用Uri.encodeComponent()
对字符串组件进行编码
与解码类似,您可以使用Uri.decodeFull()
和其他
在这里阅读更多信息切换到更好的web托管服务解决了我的问题。我当时使用的是AeonFree,这是一种免费的网络托管服务,由于明显的原因,访问受到限制
我还从使用切换到使用。您尝试调用POST或获取的API?是http包:是的,我完全理解该包,但您必须具有您调用的API类型,我怀疑您尝试错误的方式调用POST API。我正在向Moodle API发送请求。我已经测试了Moodle API,它运行良好。也许这也能帮你尝试一下,谢谢你指出这一点。我对网络编程有点陌生,所以我想这可能就是问题所在。不确定为什么我的请求无法从我的颤振应用程序运行。如果我在浏览器中运行相同的请求,它将按预期工作。冷静,无需担心,如果此答案帮助您提高投票率并同时接受此答案,我将为@meeth23感到高兴。不幸的是,我需要15分才能提高投票率。当我能接受自己的答案时,我会这样做。