2009-09-18 43 views
1

這讓我頭疼幾個小時,我嘗試使用curl與我的Twitter帳戶發佈圖像到twitpic。如何發佈包含符號的多部分/表單數據

 
curl -F "username=myusername" -F "password=='hwsh[g" -F "message=test twitpic" -F [email protected]/dos/smallapps2/smallapps/tiny-delicious/snapshot/test.png http://twitpic.com/api/uploadAndPost 

它送花兒給人返回

<?xml version="1.0" encoding="UTF-8"?> 
    <rsp stat="fail"> 
     <err code="1001" msg="Invalid twitter username or password" /> 
    </rsp> 

但是,當我改變Twitter的密碼,以簡單的文字(不包含 「=」, 「 - 」, 「[」) 它確定

<?xml version="1.0" encoding="UTF-8"?> 
<rsp status="ok"> 
<statusid>4084106555</statusid> 
<userid>33348202</userid> 
<mediaid>56qrz</mediaid> 
<mediaurl>http://twitpic.com/i6qwg</mediaurl> 
</rsp> 

我的問題是如何使用包含任何字符的強密碼來做這件事。 請提示。 謝謝。

+2

嘗試urlencode它。 – Eimantas 2009-09-18 18:22:11

回答

0

我試着運行您的示例,使用完全相同的密碼(在測試帳戶上),並且沒有任何問題上傳我的示例圖像。我甚至通過pcap查看,以確保編碼正確完成。

-desktop:~/Dropbox$ curl -vv -F "username=********" -F "password=='hwsh[g" -F "message=test twitpic" -F [email protected]/code_Quality_Measurement_wtfm.jpg http://twitpic.com/api/uploadAndPost 
* About to connect() to twitpic.com port 80 (#0) 
* Trying 174.36.58.233... connected 
* Connected to twitpic.com (174.36.58.233) port 80 (#0) 
> POST /api/uploadAndPost HTTP/1.1 
> User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15 
> Host: twitpic.com 
> Accept: */* 
> Content-Length: 46066 
> Expect: 100-continue 
> Content-Type: multipart/form-data; boundary=----------------------------50b761e49108 
> 
< HTTP/1.1 100 Continue 
< HTTP/1.1 200 OK 
< Server: nginx/0.6.35 
< Date: Thu, 03 Dec 2009 19:06:38 GMT 
< Content-Type: application/xml 
< Connection: keep-alive 
< X-Powered-By: PHP/5.2.9 
< Content-Length: 196 
< 
<?xml version="1.0" encoding="UTF-8"?> 
<rsp status="ok"> 
<statusid>6311967029</statusid> 
<userid>**********</userid> 
<mediaid>rzu6c</mediaid> 
<mediaurl>http://twitpic.com/rzu6c</mediaurl> 
* Connection #0 to host twitpic.com left intact 
* Closing connection #0 
</rsp> 

你在用什麼殼牌?根據您在密碼中使用什麼「特殊」字符,您可能需要以不同的方式將它們轉義出來以防止擴展shell等等。任何時候在命令行中使用雙引號時,必須處理變量擴展特別是如果您的密碼包含美元($)。最好在密碼字段周圍使用單引號,並明確地轉義密碼中的任何單引號:

-F 'password==\'hwsh[g' 
相關問題