Android получает изображения из WCF Rest Service - PullRequest
3 голосов
/ 30 января 2012

Я довольно новичок в Android и WCF.Я делаю пользовательскую таблицу с очень маленьким изображением на сервере базы данных sql как varbinary.В моем сервисе у меня есть следующий OperationContract:

        [OperationContract]
    [WebGet(UriTemplate = "users/{emailAddress}/Image", ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare)]
    System.IO.Stream GetImage(string emailAddress);

Реализация:

      public System.IO.Stream GetImage(string emailAddress)
   {
       //parse personID, call DB
       string query = "Select profilePic from Flows_Users WHERE emailAddress= @emailAddress";
       SqlConnection objConnection = new SqlConnection();

       DataSet ObjDataset = new DataSet();
       SqlDataAdapter objAdapater = new SqlDataAdapter();
       SqlCommand objCommand = new SqlCommand(query, objConnection);
       objCommand.Parameters.Add("emailAddress", SqlDbType.NVarChar).Value = emailAddress;
       objConnection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnStr"].ToString();
       objConnection.Open();
       byte[] pic = (byte[])objCommand.ExecuteScalar();
       objConnection.Close();

       // if (pic == null)
       //     return null;

       OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse;

       // //if (image_not_found_in_DB)
       // //{
       // //    context.StatusCode = System.Net.HttpStatusCode.Redirect;
       // //    context.Headers.Add(System.Net.HttpResponseHeader.Location, url_of_a_default_image);
       // //    return null;
       // //}

       ////  everything is OK, so send image

       context.Headers.Add(System.Net.HttpResponseHeader.CacheControl, "public");
       context.ContentType = "image/jpeg";
       // context.LastModified = date_image_was_stored_in_database;
       context.StatusCode = System.Net.HttpStatusCode.OK;
       return new System.IO.MemoryStream(pic);
   }

Есть ли способ прочитать это в представлении изображений Android?Я не смог сделать это способом base64 JSON, потому что строка продолжала завершаться каждый раз, когда я пытался поместить ее в JSONArray.

Любая помощь будет принята с благодарностью, я работаю над этим с субботы.

1 Ответ

0 голосов
/ 29 февраля 2012

Вы возвращаете объект MemoryStream. Вместо этого верните байтовый массив Base64 вашего изображения.

На стороне Android вы можете снова превратить его в изображение и поместить в свой ImageView.

...