0

我正在使用 lwip/stack 使用 stm32f4 微控制器,我用它来控制通过以太网发送 http 请求。以下代码工作正常:

   sprintf(buffer, "GET /api/callAction?deviceID=80&name=turnOn\r\n");
   strcat(buffer, "Host: 192.168.2.7\r\n");
   strcat(buffer, "Connection: close\r\n");
   strcat(buffer, "\r\n");

问题是当服务器需要像这样的身份验证时:

 admin:admin@192.168.2.7/api/callAction?deviceID=80&name=turnOn

我尝试在代码中添加授权部分:

 strcat(buffer, "Host: admin:admin@192.168.2.7\r\n");

但是http请求不起作用。

有任何想法吗?ps:我使用 Keil ARM /stm32f4 / lwip stack 服务器:Fibaro home center lite

4

1 回答 1

1

在这里阅读:

https://en.wikipedia.org/wiki/Basic_access_authentication

你想传递这个字符串

Authorization: Basic XXXXXXXXXXXXXXXX

其中 XXXXXXXXXXXXXXXX 是 Base64 版本username:password

例如,如果用户名是Aladdin,密码是,OpenSesame那么你必须对字符串进行 Base64 编码Aladdin:OpenSesame,结果为QWxhZGRpbjpPcGVuU2VzYW1l

你的字符串是:

Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l

就像你对所有其他东西所做的那样,只需 strcat :

strcat(buffer, "Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l\r\n");
于 2017-07-25T19:35:44.727 回答