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 Post在第二个 Invoke-RestMethod 调用中使用参数/arg 组合。另外,请查看此SO 对有关使用 CURL 的类似问题的回复。查看问题和答案后,RapidShare 似乎需要填写 POST 表单字段。在这种情况下,您需要指定-Body参数。我认为您将使用 PowerShell 哈希表,其中每个条目对应于一个表单字段名称/值对。看起来需要的一个字段是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 回答