2017-06-22 15 views
0

私は今、JSONとしてHttpRequestのリクエストボディを取得して読み込む方法を1週間は試しています(JSONで私に送信されます)。 WCF RESTfulサービスですが、わかりません。これまでのところ、私が来て遠いは、このように、私のリクエストボディの内容を与える代わりに、JSONとしてのそれの奇妙なXML変換としてそれを示しているOperationContext.Current.RequestContext.RequestMessage.ToString()を使用することです:WCF RESTがJSONリクエストボディを読み取っています

<root type="object"> 
<reqPrices type="object"> 
<regionID type="null"/> 
<cityCode type="string">New York</cityCode> 
<userName type="string">test</Password> 
</obj> 
</root> 

私がしました

namespace TBServices.Services.SilWebApi 
{ 
    [ServiceContract] 
    public interface IServiceSilWebApi 
    { 

     [OperationContract] 
     [WebInvoke(Method = "POST", UriTemplate = "prices", 
      RequestFormat = WebMessageFormat.Json, 
      ResponseFormat = WebMessageFormat.Json, 
      BodyStyle = WebMessageBodyStyle.Bare)] 
     Stream DoWorkPrices(); 
    } 
} 

と次のコードでサービス::次のコードでIServiceクラスを持っ

namespace TBServices.Services.SilWebApi 
    { 
     [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] 
     public class ServiceSilWebApi : BaseService, IServiceSilWebApi 
     { 
      ... 
      public Stream DoWorkPrices() 
      { 
       string aa = OperationContext.Current.RequestContext.RequestMessage.ToString(); 
       return new Stream(); 
      } 
      ... 
     } 
    } 

設定ファイルの関連セクションは次のとおりです。

<service name="TBServices.Services.SilWebApi.ServiceSilWebApi"> 
     <endpoint address="" behaviorConfiguration="web" binding="customBinding" bindingConfiguration="RawReceiveCapable" contract="TBServices.Services.SilWebApi.IServiceSilWebApi" /> 
</service> 

私はWCF/REST/SOAP/Webサービスへの新たなんだ、と私は両方こことMSDNで、私がやろうとしているかについて見つけることができる何かを読んだが、私はまだ」することができますそれを理解する。私は既にこの質問に類似した質問を持ってこのリンクを見ました:https://social.msdn.microsoft.com/Forums/vstudio/en-US/d3b6307e-886c-4b8a-a7ff-00cd9490520b/read-incoming-data-as-json-wcf?forum=wcfしかし、私はそれのほとんどを理解していません。 ご協力いただければ幸いです!

答えて

0

だけPOSTを使用してデータを受信した場合は、あなたのメソッドはPOSTデータを受信するための引数を必要とします:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "prices", 
    RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Bare)] 
Stream DoWorkPrices(string jsonData); 
+0

おかげで、私はすでにそれを試してみたし、それもこの機能には行きませんランタイムは、マッチすると認識しない – Shirli

関連する問題