GET リクエストで画像を送信するべきではありませんDownloadStringAsync
。@radoslaf が述べたように、代わりにUploadメソッドを使用する必要があります (デフォルトで POST を実行します)。また、バイト配列を送信する場合は、UploadDataAsync
(not UploadString
) を使用する必要があります。
また、クライアントからバイトを受信するようにサービスをコーディングする必要があります。http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspxの投稿は、このようなサービスを実装する方法を示しています。
コメント後の更新- なるほど、WP7.5 の WebClient API は非常に限られています。このシナリオでは、HttpWebRequest
タイプを使用する方が適切である可能性があります。以下のコードは、これをシナリオで使用する方法を示しています。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
HttpWebRequest req = HttpWebRequest.CreateHttp("http://here.url/service1.svc/saverecord3");
req.Method = "POST";
req.Headers[HttpRequestHeader.ContentType] = "application/octet-stream";
req.BeginGetRequestStream(GetRequestStreamCompleted, req);
}
void GetRequestStreamCompleted(IAsyncResult ar)
{
byte[] imageBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
HttpWebRequest req = (HttpWebRequest)ar.AsyncState;
Stream reqStream = req.EndGetRequestStream(ar);
reqStream.Write(imageBytes, 0, imageBytes.Length);
reqStream.Close();
req.BeginGetResponse(GetResponseCompleted, req);
}
void GetResponseCompleted(IAsyncResult ar)
{
HttpWebRequest req = (HttpWebRequest)ar.AsyncState;
HttpWebResponse resp = (HttpWebResponse)req.EndGetResponse(ar);
this.Dispatcher.BeginInvoke(() =>
{
this.txtStatus.Text = "Upload result: " + resp.StatusCode;
});
}