実現したいこと
Gmailで受信したメールの本文を GoogleAppsScript でJSON形式に変換して
とあるURLにPOSTして、受信した側で本文を加工してDBに登録する
というシステムを作っています。
GoogleAppsScript のPOSTはレスポンスコード:200を返してきており
受信した側も受信した request はnullではないと返してきているのですが
request の中身が取得できません。
受取る用のJSON形式に対応したクラスを作成し、POSTで受け取るために必要だという
[FromBody]を記述しましたが、ログでrequestの中身を表示したところ
request: xxxxxx.Controllers.ApiController+RequestJson
となっていました。
JSONをPOSTで受信する場合に他に必要なものがあるのでしょうか?
受信した側のログ
[INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[64] POST受け取った [INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[70] requestはnullではないです。 [INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[72] request:xxxxxxxxxx.Controllers.ApiController+RequestJson [INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[73] method: [INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[74] muteHttpExceptions:False [INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[75] contentType: [INFO] xxxxxxxxxx.Controllers.ApiController.Receive()[75] payload:
該当のソースコード
GAS
1function sendHttpPost(){ 2 3 var payload = 4 { 5 'message' : "メール本文" 6 }; 7 8 var options = 9 { 10 'method' : 'post', 11 'muteHttpExceptions': true, 12 'contentType' : 'application/json', 13 'payload' : JSON.stringify(payload) 14 }; 15 16 var response; 17 18 try{ 19 response =UrlFetchApp.fetch('https://xxxx.xxxxxxxxx.co.jp/Api/Receive/', options); 20 console.log("UrlFetchAppの戻り値:"+response.getResponseCode()); 21 } 22 catch(e) 23 { 24 console.log("error:"+e); 25 } 26 27} 28
C#
1// JSON形式に合わせたクラス 2public class RequestJson 3{ 4 public string method { get; set; } 5 public bool muteHttpExceptions { get; set; } 6 public string contentType { get; set; } 7 public string payload { get; set; } 8} 9 10//POSTを受け取るMETHOD 11[HttpPost] 12public void Receive([FromBody]RequestJson requestJson) 13{ 14 try 15 { 16 logger.Info("POST受け取った"); 17 18 if (requestJson == null) 19 { 20 logger.Info("requestJsonがnullです。"); 21 } 22 else { 23 ViewBag.Receive = requestJson; 24 logger.Info("requestJsonはnullではないです。"); 25 logger.Info("requestJson:" + requestJson); 26 logger.Info( "method:" + requestJson.method); 27 logger.Info("muteHttpExceptions:" + requestJson.muteHttpExceptions); 28 logger.Info("contentType:" + requestJson.contentType); 29 logger.Info( "payload:" + requestJson.payload); 30 } 31 32 //JSONが受け取れられれば、ここで加工、DBへの登録を行いたい。 33 34 } 35 catch (Exception ex) 36 { 37 logger.Error(ex, "例外発生:"+ex); 38 } 39 finally 40 { 41 logger.Info("おわり"); 42 } 43 44} 45
試したこと
[FromBody]を外したり、stringとして受け取れないかを試してみましたがうまくいきませんでした。
環境
ASP.NET Core 3.1
回答2件
あなたの回答
tips
プレビュー