2012-02-23 7 views
3

私はwget/curlを使ってlinuxでテストを行っています。私はwgetを実行することができますが、私はcurlと同じことをすることはできません。wget .vs llinuxを使ったcurl

wgetバージョン:

wget -v -O osu.tst -U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' 'http://ohiostate.bncollege.com/webapp/wcs/stores/servlet/TBListView?catalogId=10001&storeId=33552&termMapping=N&courseXml=<?xml version="1.0" encoding="UTF-8"?><textbookorder><courses><course dept="CHEM" num="100" sect="16030" term="S12" /></courses></textbookorder> ' 

curlバージョン:

curl -v -b fftfcook -A "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4" -L "http://ohiostate.bncollege.com/webapp/wcs/stores/servlet/TBListView?catalogId=10001&storeId=33552&termMapping=N&courseXml=<?xml version="1.0" encoding="UTF-8"?><textbookorder><courses><course dept="CHEM" num="100" sect="16030" term="S12" /></courses></textbookorder>" 

curlwgetは、ブラウザが生成するものを取得しながら、コンテンツの一部のページを返します。私はクッキー/ etc ..を変更しようとしましたが、wgetはストレート "get"なので、curlで動作するはずです。ユーザーエージェントは同じに設定されています...

すべてのポインタが役立ちます。

+1

URLを一重引用符で囲むか、二重引用符をエスケープしてください...それは誤植ですか? – Dmitri

+0

ps ..すでにurlの一重引用符と二重引用符を使って試してみましたが、URL内の二重引用符をエスケープしています。違いはありません –

+0

デフォルトではcurlはhttpリダイレクトを処理しません。オリジナルのURLが適切なコンテンツへのリダイレクトを返すのでしょうか?この場合、wgetはそれを取得しますが、カールしません(-Lオプションを使用しない限り) – jap1968

答えて

3

問題は、GETデータがURLエンコードされていないように見えます。ただし、ブラウザのアドレスバーに入力すると、ブラウザでこの処理が行われることがあります。

ではなくURLの末尾にGETデータを仮止め、各値の-d--data-urlencodeオプションを使用して、GETデータとしてこれらを治療するため-Gオプションを渡します。だから、次のように終わるだろう:

curl -v -b fftfcook -A "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4" -L 'http://ohiostate.bncollege.com/webapp/wcs/stores/servlet/TBListView' -G -d 'catalogId=10001' -d 'storeId=33552' -d 'termMapping=N' --data-urlencode 'courseXml=<?xml version="1.0" encoding="UTF-8"?><textbookorder><courses><course dept="CHEM" num="100" sect="16030" term="S12" /></courses></textbookorder>' 

様々な-d--data-urlencodeオプションは、URLにGETデータを形成するために一緒に結合されます。フォームデータの二重引用符が問題を引き起こさないように、二重引用符から一重引用符への変更にも注意してください。

関連する問題