我需要一個適用於所有事務的SOAP協議的Amazon S3 Win客戶端。據我所見,大多數解決方案都是基於REST而不是SOAP。有任何想法嗎?基於SOAP的Amazon S3客戶端
編輯:
只想澄清:使用REST,而不是請不要建議。我完全意識到兩種協議都可以或不可以做什麼。所以如果我要求這個具體的解決方案,這是有原因的。
我需要的是一款適用於Win平臺的工作軟件,它針對Amazon S3使用SOAP,而不是建議如何完成我的工作。謝謝。
我需要一個適用於所有事務的SOAP協議的Amazon S3 Win客戶端。據我所見,大多數解決方案都是基於REST而不是SOAP。有任何想法嗎?基於SOAP的Amazon S3客戶端
編輯:
只想澄清:使用REST,而不是請不要建議。我完全意識到兩種協議都可以或不可以做什麼。所以如果我要求這個具體的解決方案,這是有原因的。
我需要的是一款適用於Win平臺的工作軟件,它針對Amazon S3使用SOAP,而不是建議如何完成我的工作。謝謝。
啓動Visual Studio 2008,創建一個新的C#Windows控制檯應用程序。
添加S3 WSDL作爲服務引用。在Solution Explorer中,右鍵單擊References,選擇Add Service Reference在地址框中輸入S3 WSDL地址:http://s3.amazonaws.com/doc/2006-03-01/AmazonS3.wsdl。點擊開始。 「AmazonS3」應顯示在「服務」框中。輸入一個名稱空間。我進入了Amazon.S3。點擊確定。
修改Program.cs中看起來像下面這樣:
using System;
using System.Globalization;
using System.Text;
using System.Security.Cryptography;
using ConsoleApplication1.Amazon.S3;
namespace ConsoleApplication1 {
class Program {
private const string accessKeyId = "YOURACCESSKEYIDHERE0";
private const string secretAccessKey = "YOURSECRETACCESSKEYHEREANDYESITSTHATLONG";
public static DateTime LocalNow() {
DateTime now = DateTime.Now;
return new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, now.Millisecond, DateTimeKind.Local);
}
public static string SignRequest(string secret, string operation, DateTime timestamp) {
HMACSHA1 hmac = new HMACSHA1(Encoding.UTF8.GetBytes(secret));
string isoTimeStamp = timestamp.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture);
string signMe = "AmazonS3" + operation + isoTimeStamp;
string signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(signMe)));
return signature;
}
static void Main(string[] args) {
DateTime now = LocalNow();
AmazonS3Client client = new AmazonS3Client();
var result = client.ListAllMyBuckets(
accessKeyId,
now,
SignRequest(secretAccessKey, "ListAllMyBuckets", now));
foreach (var bucket in result.Buckets) {
Console.WriteLine(bucket.Name);
}
}
}
}
如果現在插入您在適當的地點訪問密鑰和安全訪問密鑰和運行程序,你應該得到你的S3存儲桶的清單。
AmazonS3Client類具有所有可用的SOAP操作作爲實例方法。
亞馬遜網站攜帶一個較舊的(VS2005 + WSE)C#/ SOAP示例http://developer.amazonwebservices.com/connect/entry.jspa?externalID=129&categoryID=47。
編輯:在http://flyingpies.wordpress.com/2009/08/04/the-shortest-ever-s3-csoapwcf-client/發佈視覺工作室解決方案。
爲什麼你需要SOAP? S3的REST API比較簡單,我相信SOAP缺少一些功能... – bdonlan 2009-08-04 20:12:07