嗨,这是我的第一篇文章,所以如果我没有正确格式化或者不是主题,请告诉我。
我需要使用cURL来访问数据库并为存储在云中的每个设备提取数据点。到目前为止,我的问题是如何从这一行保存访问令牌:
`curl -X POST -d "<user><email>myemail@anexample.com</email><password>Passwordexample</password><application><app_id>anidexample_id</app_id><app_secret>asecretexample_secret</app_secret></application></user>" -H "Content-Type:application/xml" https://user.aylanetworks.com/users/sign_in.xml`
变成一个变量。
到目前为止,我已经使用过:
@echo off
set /p UserInput= Enter the Access Token:
@echo on
curl -H "Authorization: auth_token %UserInput%" https://ads-dev.aylanetworks.com/apiv1/dsns/AC000W000007000/properties.xml>TestFile.xml
这会传递令牌,但每次都需要手动输入。我试图在不需要用户输入的情况下使用套装,但我还没有能够使用它。设置变量有什么我不知道的吗?
非常感谢任何帮助,
DM
答案 0 :(得分:3)
假设CURL的XML响应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<authorization>
<access-token>0317080d361a430bb81e3997114267bf</access-token>
<refresh-token>c696753bddb4459c9a8ceb54fa04d53b</refresh-token>
<expires-in type="integer">86400</expires-in>
<role>OEM::Staff</role>
<role-tags type="array"/>
</authorization>
您可以尝试:
@echo off
set URL="<user><email>myemail@anexample.com</email><password>Passwordexample</password><application><app_id>anidexample_id</app_id><app_secret>asecretexample_secret</app_secret></application></user>"
for /f "skip=2 tokens=3 delims=^<^>" %%a in ('curl -X POST -d %URL% -H "Content-Type:application/xml" https://user.aylanetworks.com/users/sign_in.xml') do (
set "$token=%%a"
goto:next)
:next
echo The token is : %$token%
pause
curl -H "Authorization: auth_token %$token%" https://ads-dev.aylanetworks.com/apiv1/dsns/AC000W000007000/properties.xml>TestFile.xml
我在发送第二个请求之前推了一个PAUSE
,您可以检查%$token%