现在,我正在创建一个 WCF 服务,该服务将位置发送到Bing Map API,并将PNG图像返回给服务客户端。目前,我从他们的文档网页中复制了一个有效的api示例,但我很难确定如何继续下去。
从其他stackoverflow问题开始,我首先转换了响应,然后将其转换为SELECT
startDate.date AS date,
nextDate.date AS next_date,
DATEDIFF(nextDate.date, startDate.date) AS diff
FROM
(SELECT (@row_number := @row_number + 1) AS orderNum, date
FROM ORDERS, (SELECT @row_number:=0) AS t
ORDER BY date) AS startDate
INNER JOIN
(SELECT (@row_number2 := @row_number2 + 1) AS orderNum, date
FROM ORDERS, (SELECT @row_number2 := 0) AS t
ORDER BY date
LIMIT 999999999999
OFFSET 1) AS nextDate ON nextDate.orderNum = startDate.orderNum;
Output:
2018-01-01 2018-01-06 5
2018-01-06 2018-01-06 0
2018-01-06 2018-01-19 13
2018-01-19 2018-02-02 14
2018-02-02 2018-02-27 25
。但是它触发并收到一个错误,提示输入不是Base64
形式。
A screenshot of what input looks like
Base64
答案 0 :(得分:0)
它已经是一个byte[]
的PNG图片。另外,请记住,不能保证返回的图像是PNG
,JPEG
或GIF
。除非返回a specific type is requested,否则它将返回最合适的图像类型。
例如fmt=jpeg
您只需要对此做些事情。在我的示例中,我将其保存到文件中。您可能只需要返回byte[]
。
private static HttpClient client = new HttpClient();
public static async void GetResponse()
{
string key = Properties.Settings.Default.Key;
Uri imgUri = new Uri($"https://dev.virtualearth.net/REST/v1/Imagery/Map/Road/Redmond Washington?ms=500,270&zl=12&&c=en-US&he=1&fmt=png&key={key}");
HttpResponseMessage response = await client.GetAsync(imgUri);
response.EnsureSuccessStatusCode();
byte[] responseData = await response.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("test.png", responseData);
}