2013-02-05 111 views
0

我有一個關於curl的特定問題。我想打電話給我的XML頁面,我執行這樣的事情從我的終端:來自終端的curl -d命令

curl -d @<xml page> <url> 

然而,當我執行下面的命令,我得到如下:

Invalid request structure 

在我的XML頁面請求如下所示:

<example type="request"> 
      <doLogin> 
        <userName>my_username</userName> 
        <password>my_password</password> 
        <...other details> 
      </doLogin> 
</example> 

如何在curl命令中傳遞用戶名和密碼的參數?

回答

0

您是否問過如何使用POST發送該XML文件,並且在單個命令行中使用該XML中的定製用戶和密碼?

如果是這樣,那麼通過sed將模板XML文件傳送到讓它填充正確的值可能是一個想法,然後讓curl讀取文件以從其標準輸入發佈。

$的sed -e 「S/my_username/$ USER/G」 -e 「S/MY_PASSWORD/$密碼/ G」 < template_file |捲曲-d @ - [URL]

4

如果你想發佈一個XML文件,嘗試這樣做:

curl -d "@./file.xml" -X POST -H 'Content-Type:text/xml' http://domain.tld/path 

相反,如果用戶名/密碼是由基本身份驗證處理,嘗試做這種使用UNIX外殼

user=$(xmllint --xpath '/example/doLogin/userName/text()' file.xml) 
pass=$(xmllint --xpath '/example/doLogin/password/text()' file.xml) 
curl -u "$user:$pass" http://domain.tld/path 

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<example type="request"> 
      <doLogin> 
        <userName>my_username</userName> 
        <password>my_password</password> 
        <...other details> 
      </doLogin> 
</example>