0
$FreeUploadServer = Invoke-RestMethod -Uri "http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=nextuploadserver"
Invoke-RestMethod -Uri "http://rs$FreeUploadServer.rapidshare.com/cgi-bin/rsapi.cgi?sub=upload&login=43533592&password=password&filecontent=C:\libs\test.txt" 

それが機能しない理由はわかりません.filecontentパラメータに関係していますが、APIに関するドキュメント全体を読みましたが、わかりません.

API ドキュメント

4

2 に答える 2

4

-Method Post2 回目の Invoke-RestMethod 呼び出しでパラメーター/引数の組み合わせを使用していることを確認してください。また、CURL の使用に関する同様の質問に対するこの SO の回答もご覧ください。質問と回答を見ると、RapidShare は POST フォーム フィールドに入力する必要があるようです。この場合、-Bodyパラメータを指定する必要があります。各エントリがフォーム フィールドの名前と値のペアに対応する PowerShell ハッシュ テーブルを使用すると思います。必要な 1 つのフィールドはフィールドのようfilecontentです。おそらく値はファイルの内容です。

また、POST を使用する場合、GETクエリ パラメータをPOSTフォーム フィールドに変換する必要があります。

$url = "http://rs$FreeUploadServer.rapidshare.com/cgi-bin/rsapi.cgi"
$fields = @{sub='upload';login='43533592';password='password';filename='test.txt';
            filecontent=([IO.File]::ReadAllText('c:\libs\test.txt'))}

Invoke-RestMethod -Uri $url -Body $fields -Method Post

うまくいかない場合は、代わりに[IO.File]::ReadAlltext()試してみてください。[IO.File]::ReadAllBytes()

于 2012-09-03T17:45:16.380 に答える
0

API ドキュメントに、POST メソッドを使用する場合はすべてのパラメーターを本体で渡す必要があるという小さなセクションがあることがわかりました。私は PowerShell で RapidShare にアップロードする関数を書きました。これが将来人々に役立つことを願っています。これは非常に面倒でした。

function Upload-RapidShare([string]$File,[string]$Name)
{
     $FreeUploadServer = Invoke-RestMethod -Uri "http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=nextuploadserver"
     Invoke-RestMethod "http://rs$FreeUploadServer.rapidshare.com/cgi-bin/rsapi.cgi" -Body  "sub=upload&login=USERNAME&password=PASSWORD&filename=$Name&filecontent=$File" -Method Post
}
于 2012-09-03T19:15:50.813 に答える