2012-01-18 34 views
2

これは簡単なことだと思っていますが、私の答えはどこにも見つかりません... .netを介して残りのAPIを照会する必要があるクライアントがあります。彼はapiのURLとデータのサンプルを私に送った。私はrestsharpを使用していると私はサービスにポストをやろうとしているrestsharpで休憩サービスに投稿

<?xml version="1.0"?> 
<root> 
<request> 
<APIClientID>0</APIClientID > 
<Version>0</Version> 
<APIPassword>password</APIPassword > 
<Function>functionName</Function > 
<Params> 
<UserId>(current-datetime)</UserId > 
<page>example.aspx</page> 
<application>appName</application> 
<function>functionName</function> 
</Params> 
</request > 
</root > 

:これは、彼が送信したものです。しかし、私はちょうどAPIの詳細を取得ページを取得しています。これは私が間違っているつもりだどこにどんな思いが大幅apprecaitedされるだろう...私はrestsharpでやっている

var client = new RestClient(); 
client.BaseUrl = url; 

var request = new RestRequest(Method.POST); 

request.AddHeader("APIClientID", "4"); 
request.AddHeader("Version", "0"); 
request.AddHeader("APIPassword", "password"); 
request.AddHeader("Function", "TransAPIStats"); 
request.AddHeader("Version", "0"); 
request.AddParameter("Client", "test client"); 
request.AddParameter("UserId", DateTime.Now.ToString()); 
request.AddParameter("Page", "example.aspx"); 
request.AddParameter("Application", "app"); 
request.AddParameter("Function", "function"); 

RestResponse response = client.Execute(request); 

です!私はhte xmlについて、restsharpコールに正しく翻訳していないと思っていますが、この時点では失われています...ありがとう!

答えて

3

POST本体がXML文書である必要がある場合は、AddBody()を使用します。デフォルトでは、渡されたオブジェクトをXMLとしてシリアル化します。

var client = new RestClient(); 
client.BaseUrl = url; 

var request = new RestRequest(Method.POST); 
request.AddBody(new { 
    root = new { 
     request = new { 
      APIClientID = 4, 
      Version = 0, 
      APIPassword = "password", 
      Function = "TransAPIStats", 
      Params = new { 
       UserId = "abc", 
       page = "example.aspx", 
       Application = "hrblock-cb", 
       Function = "ecb" 
      } 
     } 
    } 
}); 

それとも、代わりに、インライン匿名オブジェクトのスキーマおよび使用に一致する単純なC#オブジェクトを定義することができます:あなたは、あなたが生成しようとしているスキーマに一致する匿名オブジェクトでこれを行うことができます。

シリアル化を制御する必要がある場合(デフォルトでは、表示するサンプルデータに基づいて動作する必要があります)、独自のISerializerを実装できます。そのためのドキュメントはここの最後のセクションです:https://github.com/restsharp/RestSharp/wiki/Deserialization

+0

私は、XDocumentシリアライザが便利なツールと考えています:-) –

+0

ISerializerは貢献方法のひとつです。 –

+0

私はちょうどそれを行うかもしれません。 –

関連する問題