Return 图片来自 asp.net 网络 api 到 zebble
Return an image from asp.net web api to zebble
我正在尝试 return 来自网络的图像 API 像这样 zebble:
网络api:
public HttpResponseMessage GetImage()
{
var memoryStream = custom logic to create image
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(memoryStream.ToArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result;
}
鹅卵石:
var imageData = await Get<byte[]>(url);
var imageView = new ImageView { ImageData = imageData }
但是 Get
抛出异常:
Exception thrown: 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
Exception thrown: 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
Exception thrown: 'System.Exception' in Zebble.UWP.dll
Exception thrown: 'System.Exception' in mscorlib.ni.dll
ERROR: HttpGet -> 'url' failed.
WARNING: Failed to convert API response to Byte[]
###############################################
Base issue: Unexpected character encountered while parsing value: �. Path '', line 1, position 1.
--------------------------------------
STACK TRACE:
at Zebble.Framework.BaseApi.<GetFromTheServer>d__24`1.MoveNext()
at Zebble.Framework.BaseApi.<Get>d__25`1.MoveNext()
知道如何解决这个问题吗?
您的 WebApi 必须 return string。您可以使用Base64字符串来传输图像数据。
第 1 步: 将您的 Web API 代码更改为:
var memoryStream = new MemoryStream(); //TODO: custom logic to create image
image.Save(memoryStream, ImageFormat.Png);
return Ok(Convert.ToBase64String(memoryStream.ToArray()));
更多详情:http://zebble.net/docs/get-apis
第 2 步:在您的 Zebble 代码中,使用 Zebble WebAPI 代理调用您的 WebAPI 接收 Base64 字符串,转换到 byte[] 并设置为 ImageView 的来源:
var base64 = await Api.Get<string>(url);
var imageData = Convert.FromBase64String(base64);
myImageView.ImageData = imageData;
更多详情:http://zebble.net/docs/calling-a-get-api-in-the-mobile-app
我正在尝试 return 来自网络的图像 API 像这样 zebble:
网络api:
public HttpResponseMessage GetImage()
{
var memoryStream = custom logic to create image
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(memoryStream.ToArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result;
}
鹅卵石:
var imageData = await Get<byte[]>(url);
var imageView = new ImageView { ImageData = imageData }
但是 Get
抛出异常:
Exception thrown: 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
Exception thrown: 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
Exception thrown: 'System.Exception' in Zebble.UWP.dll
Exception thrown: 'System.Exception' in mscorlib.ni.dll
ERROR: HttpGet -> 'url' failed.
WARNING: Failed to convert API response to Byte[]
###############################################
Base issue: Unexpected character encountered while parsing value: �. Path '', line 1, position 1.
--------------------------------------
STACK TRACE:
at Zebble.Framework.BaseApi.<GetFromTheServer>d__24`1.MoveNext()
at Zebble.Framework.BaseApi.<Get>d__25`1.MoveNext()
知道如何解决这个问题吗?
您的 WebApi 必须 return string。您可以使用Base64字符串来传输图像数据。
第 1 步: 将您的 Web API 代码更改为:
var memoryStream = new MemoryStream(); //TODO: custom logic to create image
image.Save(memoryStream, ImageFormat.Png);
return Ok(Convert.ToBase64String(memoryStream.ToArray()));
更多详情:http://zebble.net/docs/get-apis
第 2 步:在您的 Zebble 代码中,使用 Zebble WebAPI 代理调用您的 WebAPI 接收 Base64 字符串,转换到 byte[] 并设置为 ImageView 的来源:
var base64 = await Api.Get<string>(url);
var imageData = Convert.FromBase64String(base64);
myImageView.ImageData = imageData;
更多详情:http://zebble.net/docs/calling-a-get-api-in-the-mobile-app