.NET Standard 2.0(検証環境は .NET Standard 2.0 Xamarin.Forms プロジェクト)で OAuth2 の API コールを行いたいです。
現状、以下のようなコードを書いております。
C#
1using System; 2using System.Collections.Generic; 3using System.IO; 4using System.Linq; 5using System.Net.Http; 6using System.Net.Http.Headers; 7using System.Text; 8using System.Threading.Tasks; 9 10private const string Url = "https://s3-api.us-geo.objectstorage.softlayer.net/myimages/"; 11private const string Bearer = "Bearer eyJraWQiOiIyMDE3MTAzMC0wMDowMDowMfjqwoplaAgw..."; 12 13public void UploadFile(Stream stream) 14{ 15 16 var content = new MultipartFormDataContent(); 17 18 // Stream を byte[] に変換 19 var imageByteArray = ReadFully(stream); 20 21 var imageContent = new ByteArrayContent(imageByteArray); 22 imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg"); 23 content.Add(imageContent); 24 25 var httpClient = new HttpClient(); 26 /** 色々試してみました **/ 27 //httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded") { CharSet = "UTF-8" }); 28 //httpClient.DefaultRequestHeaders.Add("Authorization", Bearer); 29 //httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", Bearer); 30 httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", Bearer); 31 32 var response = httpClient.PutAsync(Url + "test", content).Result; 33}
上記コードの結果としては、"Connection reset by peer" というエラーになります。
https://msdn.microsoft.com/en-us/library/ms847613.aspx
問題の切り分けとして、以下のように curl で叩いた場合は成功しています。
curl
1curl -X "PUT" "https://s3-api.us-geo.objectstorage.softlayer.net/myimages/test" \ 2 -H "Authorization: Bearer eyJraWQiOiIyMDE3MTAzMC0wMDowMDowMfjqwoplaAgw..." \ 3 -H "Content-Type: image/jpeg" \ 4 -d "test.jpg"
OAuth2 の認証で弾かれていると推測していますが、正しい書き方はどのようになりますでしょうか?
ご教授のほど、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/14 15:08
2017/12/14 15:10