0

アーカイブファイル(重要な場合はZipアーカイブ)を外部サイトの既存のAPIにアップロードしようとしていますが、Webクライアントを接続してサイトへのトークンを取得することはできますが、アップロードが機能しないようですが、継続的に取得します404エラー。問題は彼らの側にあるかもしれませんが、彼らのサイトにそれについて投稿したのは私だけのようですが、UploadFileを正しく使用しているのか、それともコマンドからの応答をキャプチャする方法があるのでしょうか?これは、PowerShellコーディングを改善するためだけのものかどうかを知りたいです。

私が実行しているのは次のとおりです。

# Variables I want to use
$appArchive = "\\networkpath\Releases\CodeReleasePackage.zip"
$localArchive = "c:\temp\CodeReleasePackage.zip"
[string]$appUrl = "https://site.com/api/v1/apps/(id)/"
[string]$tokenUrl = "https://site.com/token"
[string]$uploadUrl = "https://site.com/api/v1/apps/(id)/?auth_token=$mytoken"
# $appCred = Get-Credential
$username = "email@address"
$password = "password"
# Create the web client
"Creating the client.`n"
$pgup = new-object System.Net.WebClient
$pgup.Credentials = New-Object net.NetworkCredential($username,$password)
"Going to the token page"
$pgToken = $pgup.UploadString($tokenUrl,"")
$mytoken = $pgToken -replace '{|}|"|:|token',''
"Now trying to upload the latest file with my token: $mytoken"
$pgup.UploadFile($uploadUrl,$appArchive)

{"token"、 "hkjuihgkjhiuhhlkhuhk"}のようなトークンを取得しましたが、結果のトークンを処理するためのより良い方法があるかどうかはわかりません。トークン文字列以外のすべてを削除するために置き換えました。URLに追加すると機能するはずですが、Fiddlerによると404エラーが発生します。

したがって、$ pgup.UploadFile()を実行したときにサイトからの応答をキャプチャできるようにしたいのですが、何も戻ってこないように見える場合、それをキャプチャする特定の方法はありますか?明確な例が見つかりませんでした。$response= $ pgup.UploadFile()のようなことをすると、$responseには何もありません。Webクライアントのエラーを診断するのに役立つものは何でも素晴らしいでしょう、それはかなり有用であるように思われるので、私はこれについてもっと学びたいです

4

2 に答える 2

2

これがあなたの探しているものかどうかはわかりませんが、zipファイルをサーバーにアップロードするために使用するコードを次に示します。

$File = "yourfile.zip" #File to be uploaded
$ftp = "ftp://yourserver/directory #Location for the zip file to be uploaded


$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)
$webclient.Credentials =  Get-Credential #Will prompt for user info. You can use your above way to gather credentials as well
$webclient.UploadFile($uri,$File)

ご覧のとおり、かなり短くシンプルで、コードとほぼ同じですが、トークンを処理しません。

于 2012-05-25T21:54:46.417 に答える
0

PowerShellをドライバーとして使用してサイトにアクセスできないようです。何らかの理由でアップロードを機能させることができませんが、サイトのページを読んで実際にアカウントの応答を取得できます。彼らのAPIは、PowerShellが接続を実行している方法を好まない可能性がありますが、PhoneGapからはまだ何も確認できていないため、問題にまだ対応していません。

編集:2012年6月14日これが失敗した理由は、WebClientが送信する方法でHTTP1.1要求を受け入れない側のApache実装が原因でした。HTTP 1.0に戻ることができれば、これを完了することができるはずだと言われます。または、OAUTH 2.0の実装を待って、そこから進むこともできます。

于 2012-06-01T15:00:57.617 に答える