コミュニティ

LINE WORKSのテクニカルエキスパート及び開発者と
コードのサンプル、リソース、Tip等を共有し問題解決への相談が可能です。

??dev_메인_타이틀_모바일_ja_JP??

問い合わせ

storage.worksmobile.com/openapi/message/upload.api  をC# HttpClientで送るとレスポンスが来ない

2020.11.20既読 27

事象は標題通りです。

コードのイメージとしては以下のような感じです。

事象としては、ほぼこちらの方と同じで、MultipartFormDataContentを使うとレスポンスが返って来ません。Fiddlerで見ると504(Send Failure) として表示されます。

https://forum.worksmobile.com/jp/posts/100148?scrollToCommentNo=100293
Fiddlerで実際に送っているリクエストを見る限りは、Content-Type のboundary の前後に " が入っているから起こっているような気が致します。
例)multipart/form-data; boundary="fcb1f5c9-0c96-49c3-b711-17dbbc5d1b35"
↑boundary="mojiretsu" といった感じで、前後に " がある
上に貼ったリンクの方は WebRequest を使って凌いだ、と書いてありますが、私の認識が正しければWebRequestは古く、
一般的には HttpClient を使うべきという認識でして、できればHttpClientで行きたいと思っております。
如何すればよいかご存じの方いらっしゃるでしょうか。
using (var client = new HttpClient())
{
string test = await (await client.GetAsync(uploadUri)).Content.ReadAsStringAsync();
Debug.WriteLine($"TEST ============> {test}");
client.DefaultRequestHeaders.Add("authorization", $"Bearer {accessToken}");
client.DefaultRequestHeaders.Add("consumerKey", ConsumerKey);
var form = new MultipartFormDataContent();
form.Add(new ByteArrayContent(image, 0, image.Length), name, $"{imgName}.png");
Debug.WriteLine(JsonConvert.SerializeObject(form, Formatting.Indented));
try
{
result = await client.PostAsync(uploadUri, form); 
}
catch (Exception e)
{
if (result != null) //result が null のため、Bodyを読もうとするとエラーになるので足した
{
Debug.WriteLine(JsonConvert.SerializeObject(result, Formatting.Indented));
Debug.WriteLine(await result.Content.ReadAsStringAsync());
}
Debug.WriteLine(JsonConvert.SerializeObject(e, Formatting.Indented));
throw;
}
}

コメント0

次の投稿SSOリダイレクトURLが違う