マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

WCFASP.NET Web API で、指定の JSON を受ける(受信する)方法を説明する。

JSONを受信するサービスを作成する

WCF の場合

以下のようにWCFを定義する。

WebAPIと同様、WCFでもイイ感じにBindingしてくれる。

  • KeyValRequest?がPOSTされたJSONで、
  • ソレ以外のパラメタはQueryString?
[AspNetCompatibilityRequirements(RequirementsMode =  AspNetCompatibilityRequirementsMode.Allowed)]
public class JSONService : IJSONService
{
  public StringResponse PostAnswersKeyValue(
    KeyValRequest[] akv,
    string userName, string enterpriseID, string storeID, string deviceID,
    string screenID, string initializeScreenInfoID, string time)
  {
    ・・・

    // 基本的に正常系の戻り値を返す。
    return new StringResponse()
    {
      IsError = isError,
      Message = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff")
    };
  }
}

StringResponse?でJSONも返せる。

呼び出し側の実装(JQuery)

function PostJsonFromWebStorage(url) {
    // Web Storageのすべての情報の取得
    var jsonArray = new Array();

    for (var i = 0; i < storage.length; i++) {
        var _key = storage.key(i);

        // Web Storageのキーと値を表示
        var jsonBean = {
            key: _key,
            value: storage.getItem(_key)
        };

        jsonArray.push(jsonBean);
    }

    // <p id="url"></p> に表示
    if (document.getElementById("url") != null) {
        $("#url").text(url);
    }
    // <p id="request"></p> に表示
    if (document.getElementById("request") != null) {
        $("#request").text("request:" + JSON.stringify(jsonArray).toString());
    }

    CallService("POST", url, JSON.stringify(jsonArray), "application/json; charset=utf-8", "JSON", false);
}

// ---------------------------------------------------------------
// ajax
// ---------------------------------------------------------------
// 引数
//         Type : GET or POST or PUT or DELETE verb
//         Url : Location of the service
//         Data : Data sent to server
//         ContentType : Content type sent to server
//         DataType : Expected data format from server
//         ProcessData : True or False
// 戻り値  -
// ---------------------------------------------------------------
function CallService(Type, Url, Data, ContentType, DataType, ProcessData) {
    $.ajax({
        type: Type,
        url: Url,
        data: Data,
        cache: false,
        contentType: ContentType,
        dataType: DataType,
        processdata: ProcessData,
        success: function (data) {
            // On Successfull service call
            ServiceSucceeded(data);
        },
        error: function (data) {
            // When Service call fails
            ServiceFailed(data);
        }
    });
}

// ---------------------------------------------------------------
// $.ajaxのコールバック(success)
// ---------------------------------------------------------------
// 引数    data
// 戻り値  -
// ---------------------------------------------------------------
function ServiceSucceeded(data) {
    // Success
    if (document.getElementById("response") != null) {
        // <p id="response">response</p> に結果を表示
        $("#response").text("response-success:" + JSON.stringify(data).toString());
    }
    ClearWebStorage(); // 送信成功のため、WebStorageをクリア
}

// ---------------------------------------------------------------
// $.ajaxのコールバック(error)
// ---------------------------------------------------------------
// 引数    data
// 戻り値  -
// ---------------------------------------------------------------
function ServiceFailed(data) {
    // Error
    if (document.getElementById("response") != null) {
        // <p id="response">response</p> に結果を表示
        $("#response").text("response-error:" + JSON.stringify(data).toString());
    }
    // 送信失敗のため、WebStorageをクリアしない。
}

ASP.NET Web API の場合


Tags: :.NET開発, :通信技術, :.NET Core, :ASP.NET, :ASP.NET Web API


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-10 (木) 10:32:19 (99d)