gpt4 book ai didi

c# - 将图像发送到休息服务 xamarin 表单

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:41 25 4
gpt4 key购买 nike

我正在尝试将图像从 Xamarin Forms 发送到 Rest WebApi,但没有成功。我正在使用 Montemagno 的 CrossMedia 插件。我以这种方式将 MediaFile 转换为 base64String:

if (photo != null)
{
var stream = photo.GetStream();
var bytes = new byte[stream.Length];
await stream.ReadAsync(bytes, 0, (int)stream.Length);
string imageBase64 = Convert.ToBase64String(bytes);
Task<string> sendFotoResult = restClient.SendImage(imageBase64);
string result = await sendFotoResult;
if( ... )
}

这是我的 SendImage 函数:

public async Task<string> SendImage(string foto)
{
try
{
// METHOD 1
var content = JsonConvert.SerializeObject(foto);
string url = "http://myaddress/myWS/api/Home/SendImage?foto="+ content;
var response = await _client.PostAsync(url, new StringContent(content, Encoding.UTF8, "application/json"));
return response.ReasonPhrase.ToString();

//METHOD 2
var content = JsonConvert.SerializeObject(foto);
string url = "http://myaddress/myWS/api/Home/SendImage?foto="+ content;
var result = await _client.PostAsync(url, new StringContent(content, Encoding.UTF8, "application/json"));
return result.ToString();
}catch (Exception ex)
{
return ex.Message;
}
}

方法一显示空参数错误,方法二获取URL太长错误。

我该如何解决?将图像转换为 base64String 是发送图像的最佳方式吗?

非常感谢。

最佳答案

您不应该在 URI 上发送图像。您所要做的就是将图像发送到您的请求正文中。像这样的东西会帮助你:

var client = new HttpClient();
var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(new MemoryStream(foto).ToArray()), "foto", "foto.jpg");

然后你必须在服务器端 api 上管理图像并将其转换回来。

编辑:我假设如果您还控制您的 REST api,那么您必须尝试从 uri 获取图像。你不应该那样做,而是你必须做的是从内容中获取它。这是一个教程,将引导您一路走来:https://jamessdixon.wordpress.com/2013/10/01/handling-images-in-webapi/

此外,您应该像这样调用不带参数的 POST 方法:

string url = "http://myaddress/myWS/api/Home/"

如果你已经在 Home Controller 上管理 POST 来做一些其他工作,那么你总是可以使用路由并调用这样的东西:

string url = "http://myaddress/myWS/api/Home/Images/"

ASP.NET 上的路由非常易于管理,此链接对此进行了很好的描述:https://learn.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

最后,我怀疑您可能需要加强有关标准所关注的 REST 知识。我总是推荐以下页面来了解设计 RESTful API 应该做什么和不应该做什么:http://blog.octo.com/en/design-a-rest-api/

关于c# - 将图像发送到休息服务 xamarin 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48503532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com