-2

C# RESTful サービスを介して COSM Trigger HTTP Post を受信しようとしていますが、アラートを受信して​​いません。COSM API JSON ペイロードを取得し、テスト クライアントから使用しました。これは機能しました。フィードをセットアップして、デバッグ トリガー テストを試すか、トリガーを強制的に通常どおり起動しても、REST サービスが呼び出されません。任意の形式のテスト クライアントを試してみると、サービスは JSON POST を問題なく処理します。

C# サービスは次のとおりです。

    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "cosm", 
        RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    string CosmAlert(CosmTrigger data);

CosmTrigger は、COSM トリガー フィールドをミラーリングするクラスです。

私の COSM フィードはこちらです。

トリガーを起動するために COSM ポータルから開始しています。Twitter ベースのトリガーは正常に動作しますが、URL への HTTP 投稿は正常に動作しません。これをデバッグする方法は?

4

2 に答える 2

1

Cosm トリガーは現在、JSON 本体としてトリガーを送信しません。実際には、'body' というパラメーターとしてエンコードされた JSON トリガー本体を含む URL エンコードされた要求を送信します。

テスト トリガーでhttp://requestb.inを使用し、未加工の出力を表示すると、基本的なリクエストは次のようになります。

POST /103s0dh1 HTTP/1.1
X-Request-Id: e05e9d699edbd5f584fc491cf9416df747be4df4
User-Agent: Cosm Deliverator (Axino/0.3.02) - https://cosm.com
Host: requestb.in
Content-Type: application/x-www-form-urlencoded
Content-Length: 918
Connection: close

body=%7B%22id%22%3A7443%2C%22url%22%3A%22http%3A%2F%2Fapi.cosm.com%2Fv2%2Ftriggers%2F7443%22%2C%22type%22%3A%22lt%22%2C%22threshold_value%22%3A%2220%22%2C%22timestamp%22%3A%222013-04-14T09%3A50%3A47.590044Z%22%2C%22environment%22%3A%7B%22id%22%3A57346%2C%22feed%22%3A%22http%3A%2F%2Fapi.cosm.com%2Fv2%2Ffeeds%2F57346%22%2C%22title%22%3A%22Macbook+Battery+Level%22%2C%22description%22%3A%22%22%2C%22private%22%3Afalse%2C%22location%22%3A%7B%22lat%22%3Anull%2C%22lon%22%3Anull%2C%22name%22%3A%22%22%7D%7D%2C%22triggering_datastream%22%3A%7B%22id%22%3A%22battery%22%2C%22url%22%3A%22http%3A%2F%2Fapi.cosm.com%2Fv2%2Ffeeds%2F57346%2Fdatastreams%2Fbattery%22%2C%22at%22%3A%222013-04-14T09%3A50%3A02.406927Z%22%2C%22value%22%3A%7B%22max_value%22%3A1724.0%2C%22min_value%22%3A0.0%2C%22value%22%3A%2226.28%22%7D%2C%22units%22%3A%7B%22type%22%3Anull%2C%22symbol%22%3A%22%25%22%2C%22label%22%3Anull%7D%7D%2C%22debug%22%3Atrue%7D

残念ながら私は C# の専門家ではありませんが、サービスが標準の urlencoded リクエスト本文から JSON 本文を抽出するように構成されていないことに問題があると思われますが、おそらくこれは何が起こっているのかを理解する方法の手がかりになるかもしれませんC#を知っている人にとっては間違っています。

于 2013-04-14T10:04:09.683 に答える
0

テスト済みで動作するコード -

[OperationContract]  
[WebInvoke(Method = "POST",  
BodyStyle = WebMessageBodyStyle.WrappedRequest,  
UriTemplate = "cosm")]  
string cosmStream(Stream body);
于 2013-04-14T22:21:13.413 に答える