2011-07-05 10 views
1

APIを使ってpicasaに新しい写真をアップロードしようとしています。私は次のエラーを取得しています を働いていない コード:picasa webに画像をアップロードする

Exception Details: System.Net.WebException: The remote server returned an error: (400) Bad Request. 

マイコード:

string imgPath = "C:\foo.png"; 
StreamReader reader = new StreamReader(imgPath); 
string imgBin = reader.ReadToEnd(); 
reader.Close(); 
string id=""//picasa ID 
string album = "";//album name 
string url = String.Format("http://www.picasaweb.google.com/data/feed/api/user/{0}/album/{1}",id, album); 
string auth = ""; 

     Byte[] send = Encoding.UTF8.GetBytes(imgBin); 
     int length = send.Length; 
     HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); 
     req.Method = "POST"; 
     req.ContentType = "image/png"; 
     req.ContentLength = length; 
     req.Headers.Add("Authorization", "GoogleLogin auth=" + auth); 
     req.Headers.Add("Slug", "test"); 
     Stream stream = req.GetRequestStream(); 
     stream.Write(send, 0, length); 
     stream.Close(); 
     WebResponse response = req.GetResponse(); 
     StreamReader reader = new StreamReader(response.GetResponseStream()); 
     string res = reader.ReadToEnd(); 
     reader.Close(); 

おかげ

答えて

3

問題は、あなたがイメージを読んでいるかとの可能性が高いです。代わりに、文字列としてそれを読んで、次のような要求ストリーム、に直接それを書いてみてください。

using (Stream fileStream = new FileStream(imgPath, FileMode.Open, FileAccess.Read)) 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "POST"; 
    request.ContentType = "image/png"; 
    request.ContentLength = fileStream.Length; 
    request.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + auth); 
    request.Headers.Add("Slug", "test"); 

    using (Stream requestStream = request.GetRequestStream()) 
    { 
     byte[] buffer = new byte[4096]; 
     int bytesRead = 0; 
     while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) 
     { 
      requestStream.Write(buffer, 0, bytesRead); 
     } 

     fileStream.Close(); 
     requestStream.Close(); 
    } 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    StreamReader responseReader = new StreamReader(response.GetResponseStream()); 

    string responseStr = responseReader.ReadToEnd(); 

} 
+0

ヘッダー承認は、なぜ動作しませんか? –

+0

ヘッダーにはどのようなエラーが表示されますか? – Rob

+0

:次のエラーが表示されます。リモートサーバーがエラーを再試行しました:(403)禁止されています。 –

0
  string username = form["UserName"].ToString(); // <-- ### USERNAME HERE ### 

      string password = form["Password"].ToString(); // <-- ### PASSWORD HERE ### 
      PicasaService picasaService = new PicasaService("Tester"); 
      picasaService.setUserCredentials(username, password); 

      // 2. Create a test album 
      // 
      AlbumEntry entry = new AlbumEntry(); 
      entry.Title.Text = "test-69"; 
      entry.Summary.Text = "test-69"; 
      AlbumAccessor access = new AlbumAccessor(entry); 
      PicasaEntry album = picasaService.Insert(new Uri(PicasaQuery.CreatePicasaUri(username)), entry); 

      access = new AlbumAccessor(album); 

      // 3. Upload a photo 
      picasaService.Insert(new Uri(PhotoQuery.CreatePicasaUri(username, access.Id)), System.IO.File.OpenRead("thumb-1.jpg"), "image/jpeg", "thumb-1.jpg"); 
関連する問題