使用http软件包在Flutter上执行POST请求

时间:2019-10-12 09:38:40

标签: flutter dart dart-http

我正在尝试在使用颤振时达到此终点。 https://docs.particle.io/reference/device-cloud/api/#generate-an-access-token

我在POSTMAN和curl上工作了

curl version: 
    curl https://api.particle.io/oauth/token \
       -u particle:particle \
       -d grant_type=password \
       -d "my.email@gmail.com" \
       -d "my_password"

邮递员: Authorisation Body

在curl和postman上,我都获得了带有访问令牌的回复。

但是当我尝试在Flutter上实现它时,我收到了错误响应。 这是我在Flutter上的代码。

Future<Response> getPublicKey() async {
LoginRequestModel requestModelBody = LoginRequestModel(grantType: "password",
    username: "my.email@gmail.com", password: "my_password");
Map<String, dynamic> requestBody = requestModelBody.toJson();
String bodyString = json.encode(requestBody);
//    String formBody = Uri.encodeQueryComponent(bodyString);
print("Body string: "+bodyString);
String url = "https://api.particle.io/oauth/token";
String credentials = "particle:particle";

Map<String, String> headers = {
  HttpHeaders.contentTypeHeader: "application/x-www-form-urlencoded",
  HttpHeaders.authorizationHeader: "Authorization $credentials",
};

return await post(url, headers: headers, body: bodyString);

}

打印出正文字符串的打印语句将打印出:

{"grant_type":"password","username":"my.email@gmail.com","password":"my.email@gmail.com"}

这是我得到的错误:

{"error":"invalid_request","error_description":"Invalid or missing grant_type parameter"}

我猜我在表单编码上做错了,但是我找不到正确的方法来编码身体。

问题:如何使用颤动来击打here中记录的REST端点?

1 个答案:

答案 0 :(得分:0)

很棒的website可以将 0 0 (1,2,a) 1 (2,3,b) 2 (3,4,c) 命令转换为Dart代码。

粘贴curl命令可以得到:

pd.read_sql('select * from dummy',conn)


id1  id2 label
0    1    2     a
1    2    3     b
2    3    4     c

与您的Postman屏幕快照相比,似乎表明您的curl命令实际上并不正确,因此我将其更改为:

curl