2017-07-12 9 views
0

ASP.Net CoreでHttpClientを使用してAPI呼び出しで画像を取得しようとしています。問題は、通常の画像(ファイル拡張子の種類を含む画像)では動作しますが、URLでは動作しません。API呼び出しでAuthを使用してHttpClientを使用して画像を取得できない

これは、資格情報を含む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:[email protected]/cgi-bin/snapshot.cgi?channel=0&authbasic=aXU8Hu1"); 
byte[] content = await response.Content.ReadAsByteArrayAsync(); 
return "data:image/png;base64," + Convert.ToBase64String(content); 

誰もが今までにこの問題が発生した

はここで働く呼び出しがですか?

これはなぜ動作していないのですか? http://www.techprosecurity.com/

それは、ユーザ/各カメラ(チャンネル)にアクセスするためにパスを要求する場所のIPアドレスにフックアップだカメラシステムです:


ここではそのAPIについての詳細情報です。

+0

あなたは私たちにその画像APIについてもう少し教えてもらえますか? – Win

+0

@Win私は先に進み、私の質問を編集しました。 – NoReceipt4Panda

+0

ブラウザからその画像を取得できますか?あなたは、URLに 'http'スキームがあると確信していますか? –

答えて

0

私は単にヘッダ内の認可を埋め込むことによって、回避策が見つかりました:

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; 
関連する問題