$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文档
请确保您使用的-Method Post
第二调用-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()
来代替。
原来存在这样说,如果你使用POST方法的所有参数需要在体内要通过的API文档一个微小的部分。 我写了上传到RapidShare的PowerShell中的功能,我希望这有助于人们对未来的事业,这是很烦人的。
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
}