Я недавно следовал этим урокам Ахсана Сиддика
Разработка RESTful API в ASP.Net с базой данных Azure.
часть 1
https://www.c -sharpcorner.com / статьи / создание-SQL-базы данных в-лазурь-портал /
часть 2
https://www.c -sharpcorner.com / статьи / развивающихся успокоительный-Апи-в-Asp-нетто-с-надстройкой метод /
часть 3
https://www.c -sharpcorner.com / статьи / разработки-успокоительные-АПИС-в-Asp-нетто-с-извлечения-обновления-и-удалить-функции /
Использование RESTful API в Xamarin. Android
часть 4
https://www.c -sharpcorner.com / статьи / потребляя-успокоительные-АПИС-в-Xamarin-андроида /
Мне удалось заставить все коды работать, но я застрял в той части, где я пытаюсь передать строку base64 в веб-API. В учебнике не было той части, в которой я застрял. Я протестировал свой POST API на Postman и получил это сообщение об ошибке «Ошибка HTTP 414. URL-адрес запроса слишком длинный».
Ниже вы можете увидеть часть моих кодов:
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();
}
Мне нужна помощь! Заранее спасибо!
Обновление:
Вот так выглядит мой класс контроллера
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.");
}