保存CURL将输出到批处理文件中的变量中

时间:2014-06-19 18:36:28

标签: batch-file curl

嗨,这是我的第一篇文章,所以如果我没有正确格式化或者不是主题,请告诉我。

我需要使用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

1 个答案:

答案 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%

中是否有正确的值