Android получение изображений из службы WCF Rest


Я довольно Новичок как в Android, так и в WCF. Я создаю пользовательскую таблицу с очень маленьким изображением в базе данных sql server как 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 3

1 ответ:

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

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