如何在颤动中向 API 服务器发送请求 POST 消息?

Posted

技术标签:

【中文标题】如何在颤动中向 API 服务器发送请求 POST 消息?【英文标题】:How to send request POST message to API server in flutter? 【发布时间】:2019-06-01 19:14:26 【问题描述】:

我使用 NAVER API 来检测人脸,所以我必须向 API 服务器发送 POST 消息。消息格式如下。

[HTTP Request Header]
POST /v1/vision/face HTTP/1.1  
Host: openapi.naver.com  
Content-Type: multipart/form-data; boundary=boundary-text  
X-Naver-Client-Id: Client ID
X-Naver-Client-Secret: Client Secret  
Content-Length: 96703  

--boundary-text  
Content-Disposition: form-data; name="image"; filename="test.jpg"  
Content-Type: image/jpeg  

image binary data  
--boundary-text--  

检查格式后,我使用MultipartRequestMultipartFile 编写。

Future<void> getFaceData() async 
  final Uri url = Uri.parse('https://openapi.naver.com/v1/vision/face');
  final request = http.MultipartRequest('POST',url);
  request.fields['X-Naver-Client-Id'] = 'client key(I added real value)';
  request.fields['X-Naver-Client-Secret'] = 'client secret(I added real value)';
  request.files.add(await http.MultipartFile.fromPath(
    'image',
    _image.path,
    contentType: MediaType('multipart','form-data')
  ));

  http.StreamedResponse response = await request.send();
  print(response.statusCode);

但此代码得到 401 错误,即 UNAUTHORIZED。问题是什么?我该如何解决?

【问题讨论】:

【参考方案1】:

X-Naver... 值是 HTTP 标头,而不是 表单字段。像这样添加它们:

 request.headers['X-Naver-Client-Id'] = 'client key(I added real value)';
 request.headers['X-Naver-Client-Secret'] = 'client secret(I added real value)';

【讨论】:

以上是关于如何在颤动中向 API 服务器发送请求 POST 消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中向 Gmail-API 发送批处理请求?

如何在 reactjs 中向 nodejs RESTful API 发出 POST 请求

如何在 React Native 中向 API 发出 POST 请求?

Node js中向rest服务发送https请求的步骤

Node js中向rest服务发送https请求的步骤

react中向后台服务器发送一请求 后台接口返回的是byte[]类型的图片 我现在如何在前台界面中显示它?