[英]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.