7頭の牛は写真をアップロードのためのWebAPIのは、そこにある前のコールバックのURL(以前.net4.0と、通常の動作)
コードは以下の通りであります:
// 七牛コールバック地址、CallbackBody内容名=アップロード/部材/ 1.JPG&ハッシュ= Fn6qeQi4VDLQ347NiRm-RlQx_4O2 パブリック オブジェクトポスト([FromBody] 動的データ) { アイログロガー = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod()。 DeclaringType); logger.Info(" データ:" + data.ToString()); int型のステータス= - 1 ; 試す { 文字列 avator_url = data.name。 int型 startPos = " アップロード/メンバー/ ".LENGTH; ストリング MEMBER_ID = avator_url.Substring(startPos、avator_url.IndexOf(" .JPG ") - startPos)。 MemberHelper.UpdateAvator(MEMBER_ID、avator_url)。 VaRの JSON = 新しい {結果= 新しい ストリング [ 0 ]、ステータス= 0 }。 リターンJSON。 } キャッチ(例外例) { 文字列 MSG = ex.Message + ex.StackTrace。 logger.Error(" \ rを\ n個のデータ:" + data.ToString()+" \ rをする\のnException:" + MSG、EX); VaRの JSON = 新しい {結果= 新しい ストリング [ 0 ]、ステータス=ステータス、MSG = MSG}。 リターンJSON。 } }
サポートされていないメディアタイプ(サポートされていないメディアタイプ) - 今、.NETのコアで同じコードはHTTP 415エラーを求めています
https://www.cnblogs.com/CreateMyself/p/6246977.html:記事を参照してください
これは呼ば フォームのPOSTでASP.NET MVC / WEBAPIかどうかボディ同時データは、私たちに返される要求JSONの形で、またはコントローラの形態はすべてのHTTPを結合する能力を持っているかどうか、私たちは特別な指示を行う必要はありません
七頭の牛コールバックURL形式が使用されるべきフォームPOST(の形で: " - WWW-form-urlencodedでアプリケーション/ X"のcontentType)。
.NETコアMVCモデルバインディング、デフォルトパラメータバインディングタイプはFromFormです
FromQuery、对应URL中的URLエンコード文字列( "?KEY1 = VALUE1 &キー2 =値2")。 FromForm、对应要求内容中的URLエンコード文字列( "KEY1 = VALUE1 &キー2 =値2")。 FromBody、对应要求内容の中の的のJSON文字列( "{" KEY1 ":"値1" 、 "KEY2": "値2"} ")。
.NETコアが厳しく制限され、 ポスト([FromBody]データ動的)この文言は、パラメータ・タイプに対応しなければならないJSON形式である(のcontentType:「アプリケーション/ JSONは」 )、 そうでない場合は415エラーが存在することになります
我々は2つのメソッドを記述している行うことができ、7頭の牛との両方が、そのメソッドを呼び出すために、あなたは正確に取り戻すことができます。
//七牛コールバック地址、CallbackBody内容名=アップロード/部材/ memberId.jpg &ハッシュ= Fn6qeQi4VDLQ347NiRm-RlQx_4O2 【のAllowAnonymous] [HttpPost( "updateAvatorJSON")] パブリックオブジェクト・ポスト([FromBody動的データ) { int型のステータス= -1 ; 試す { updateAvator(data.name)。 VaRのJSON =新しい{結果= ""、ステータス= 0}。 JSONを返します。 } キャッチ(例外例) { 文字列MSG = ex.Message + ex.StackTrace。 } } VaRのJSON =新しい{結果= ""、ステータス=ステータス、MSG = MSG}。 JSONを返します。 【のAllowAnonymous] [HttpPost( "updateAvatorForm")] パブリックオブジェクトポスト(文字列名、文字列ハッシュ) { int型のステータス= -1。 してみてください { updateAvator(名); VaRのJSON =新しい{結果= ""、ステータス= 0}。 JSONを返します。 } キャッチ(例外例) { 文字列MSG = ex.Message + ex.StackTrace。 VaRのJSON =新しい{結果= ""、ステータス=ステータス、MSG = MSG}。 JSONを返します。 } }
**********ポストスクリプト----マイクロ文字のアプレットwx.requestは、再び*************同様の問題に遭遇しました
クライアント:
wx.request({ URL:URL、 方法:' POST ' 、 ヘッダ:{ " コンテンツタイプ":" アプリケーション/ x-www-form-urlencodedで" } データ:dataParam、 成功:関数(RES){ }} )
対応するサーバー側のコードは、[FromForm]に変更、またはのみ既定の.NETコアのQueryStringを見つけるので。データを取得するために失敗する必要があります
[HttpPost] 公共 ダイナミックポスト( [FromForm] 列CustomOrderNumber、 [FromForm] int型得意先 ) } {
-------------------------------------------------- -------------------------------------------------- -
「Content-Typeの」とのクライアントの場合:「アプリケーション/ JSON」は、サーバーが使用しなければならない[FromBody]
-------------------------------------------------- -------------------------------------------------- -
サーバ[FromForm]及び[FromBody]、APIインターフェイスを混合することができないか、ラージオブジェクトに、または他の引数がでのQueryStringを入れて作ること
公共の ダイナミック・ポスト( 文字列CustomOrderNumber、 int型のCustomerId、 [FromBody] OrderItemDTO []の項目 )