WebAPI için base64string olarak resim gönderme; base64 dizesi çok uzun

oy
-2

Geçenlerde Ahsan Siddique bu öğreticiler takip

Azure Database ile ASP.Net içinde RESTful API geliştirme.

Bölüm 1 https://www.c-sharpcorner.com/article/creating-sql-database-in-azure-portal/

Bölüm 2 https://www.c-sharpcorner.com/article/developing-restful-api-in-asp-net-with-add-method/

Bölüm 3 https://www.c-sharpcorner.com/article/developing-restful-apis-in-asp-net-with-retrieve-update-and-delete-functions/

Xamarin.Android içinde RESTful API tüketen

bölüm 4 https://www.c-sharpcorner.com/article/consuming-restful-apis-in-xamarin-android/

Ben bütün kodlar işe başardı ama ben web api'sine base64 dizesi geçirmek çalışıyorum kısmında takıldı. öğretici ben de saplanıp kısmını yoktu. Ben Postman'a benim POST API test edilmiş ve bu hatasıalıyorum istek URL çok uzun 414. HTTP Hatası.

Benim kodlarının bir kısmını görebilirsiniz:

public String BitmapToBase64(Bitmap bitmap)
{
    //Java.IO.ByteArrayOutputStream byteArrayOutputStream = new Java.IO.ByteArrayOutputStream();
    MemoryStream memStream = new MemoryStream();
    bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, memStream);
    byte[] byteArray = memStream.ToArray();
    return Base64.EncodeToString(byteArray, Base64Flags.Default);
}

User user = new User ();
user.ID = 1;
user.name = Kelly;
user.profilepic = BitmapToBase64(NGetBitmap(uri)); //this is the part where base64string is too long

HttpClient client = new HttpClient();
string url = $http://test.azurewebsites.net/api/User/{user.ID}?name={user.name}&profilepic={user.profilepic};
var uri1 = new System.Uri(url); //base64
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(application/json));
HttpResponseMessage response;
var json = JsonConvert.SerializeObject(feedback);
var content = new StringContent(json, Encoding.UTF8, application/json);
response = await client.PostAsync(uri1, content);

if (response.StatusCode == System.Net.HttpStatusCode.Accepted)
{
    Toast.MakeText(this, Your profile is updated., ToastLength.Long).Show();
}
else
{
    Toast.MakeText(this, Your profile is not updated. + feedback.profilepic, ToastLength.Long).Show();
}

Yardıma ihtiyacım var! Şimdiden teşekkür ederim!

Güncelleme: Bu benim denetleyicisi sınıf şu anda benziyor nasıl

public HttpResponseMessage Update_User(int ID, string name, string profilepic)
{
    if (!ModelState.IsValid)
    {
        return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
    }

    UserTable newUser = new UserTable();
    var entry = db.Entry<UserTable>(newUser);
    entry.Entity.ID = ID;
    entry.Entity.name = name;
    entry.Entity.profilepic = profilepic;
    entry.State = EntityState.Modified;

    try
    {
        db.SaveChanges();
    }
    catch (DbUpdateConcurrencyException ex)
    {
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
    }
    return Request.CreateResponse(HttpStatusCode.Accepted, Your profile is updated.);
}
Oluştur 08/11/2018 saat 11:19
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

yorumlarda belirtildiği gibi, url / GET param parçası olarak base64 görüntü göndermeyin.

Bunun yerine POST isteğinin gövdesine ekleyin.

var content = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("profilepic", user.profilepic)
});
var result = await client.PostAsync(url, content);
Cevap 08/11/2018 saat 11:28
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more