繁体   English   中英

使用Auth的API调用无法使用HttpClient获得图像

[英]API call using Auth to get image using HttpClient not working

我正在尝试使用ASP.Net Core中的HttpClient通过API调用来检索图像。 问题是,它适用于常规图像(包括文件扩展名的图像),但不适用于我的URL。

我不知道这是否与涉及凭证的API URL有关。

这是一个有效的电话:

HttpResponseMessage response = await client.GetAsync(
        "https://i.stack.imgur.com/hM8Ah.jpg?s=48&g=1");
byte[] content = await response.Content.ReadAsByteArrayAsync();
return "data:image/png;base64," + Convert.ToBase64String(content);

而这不是我的:

HttpResponseMessage response = await client.GetAsync(
        "http://user:pass@CAMERA-IP/cgi-bin/snapshot.cgi?channel=0&authbasic=aXU8Hu1");
byte[] content = await response.Content.ReadAsByteArrayAsync();
return "data:image/png;base64," + Convert.ToBase64String(content);

有没有人遇到过这个问题?

有人知道为什么这行不通吗?


以下是有关该API的更多信息: http : //www.techprosecurity.com/

这是一个摄像头系统,已连接到某个位置的IP地址,该IP地址需要用户/密码才能访问每个摄像头(通道)。

我发现了一种解决方法,只需将授权嵌入标题中即可:

HttpClient client = new HttpClient();
var byteArray = Encoding.ASCII.GetBytes("username:password");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

HttpResponseMessage response = await client.GetAsync("http://CAMERA-IP/cgi-bin/snapshot.cgi?channel=0");
byte[] myBytes = await response.Content.ReadAsByteArrayAsync();
string convertedFromString = Convert.ToBase64String(myBytes);

return "data:image/png;base64," + convertedFromString;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM