私の取得/投稿にRestSharpを使用しているWindows Phone 7アプリケーションのREST APIに写真をアップロードしようとしています。次のように
ポストパラメータは、REST Windows Phone写真のアップロード
写真: をphoto_album_id
マルチパート/フォームデータとしてエンコード写真:イベントであってもよいし、既存のフォトアルバムの 識別子グループ アルバム
私は私の要求を作成しましたが、毎回、私は戻って"{\"details\":\"missing photo parameter\",\"problem\":\"The API request is malformed\"}\n
マイフォトパラメータは、次のようになります。
「--------------------------- 8cd9bfbafb3ca00 \ rを\ nContent-処分:フォームデータ。名前= \ "ファイル名\";ファイル名= \ "somefile.jpg \" \ r \ nContent-Type:image/jpg \ r \ n \ r \ n(ここにリストされたバイナリジャンク)\ r \ n ------------ ----------------- 8cd9bfbafb3ca00-- "
イメージのバイナリデータをどのように表示しているかに問題があるかどうかはわかりません(現在私のPhotoTaskCompletedイベントでは、e.ChosenPhotoの内容をバイト[]に読み込んでフォームデータを作成するためのヘルパーメソッドに渡します)またはフォームを正しく作成しない場合にのみ使用します。
I 'できるだけシンプルにしようとすると、すべての仕組みが分かればリファクタリングすることができます。
void ImageObtained(object sender, PhotoResult e)
{
var photo = ReadToEnd(e.ChosenPhoto);
var form = PostForm(photo);
var request = new RequestWrapper("photo", Method.POST);
request.AddParameter("photo_album_id", _album.album_id);
request.AddParameter("photo", form);
request.Client.ExecuteAsync<object>(request, (response) =>
{
var s = response.Data;
});
}
private string CreateBoundary()
{
return "---------------------------" + DateTime.Now.Ticks.ToString("x");
}
private string PostForm(byte[] data)
{
string boundary = CreateBoundary();
StringBuilder post = new StringBuilder();
post.Append(boundary);
post.Append("\r\n");
post.Append("Content-Disposition: form-data; name=\"filename\"; filename=\"somefile.jpg\"");
post.Append("\r\n");
post.Append("Content-Type: image/jpg");
post.Append("\r\n\r\n");
post.Append(ConvertBytesToString(data));
post.Append("\r\n");
post.Append("--");
post.Append(boundary);
post.Append("--");
return post.ToString();
}
public static string ConvertBytesToString(byte[] bytes)
{
string output = String.Empty;
MemoryStream stream = new MemoryStream(bytes);
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream))
{
output = reader.ReadToEnd();
}
return output;
}
RestSharpにはrequest.AddFile()もあります。しかしハンモックは素晴らしい図書館でもあります。私はあなたの問題を解決してうれしいです –
知っておいてよかったです。ありがとう。ハンモックには、スイッチの主要な要素であった大きなオウトサポートがあります。私は本当にレストシャープも好きです。クールなlibsを利用できるようになるのは素晴らしいことです。 – earthling