2016-04-22 3 views
0

私は、Webアプリケーションが接続するAPIコントローラを作成するためにc#.net 4.5を使用しています。このコントローラは、データを別のAPIにPOSTします。POSTを実行する方法とAPIコントローラから返すもの

だから私は私のサービスクラスを持っている:

public class PlayerServiceConnector() 
{ 
    private Uri baseUri; 
    private String UserName; 
    private String Password; 

    private string Name; 
    private string CharacterRace; 
    private string CharacterClass; 
    private string AutoSave; 
} 

public PlayerServiceConnector() 
{ 
    baseUri = new Uri("http://system/dev/API/characterGen"); 
    UserName = "Joe"; 
    Password = "12345"; 

    //just for testing 
    Name = "Mighty Man"; 
    CharacterRace = "Human"; 
    CharacterClass = "Warrior"; 
    AutoSave = true; 

    var path = baseUri + "/newCharacter"; 

    // POST new character data to 3rd party character generating API 
    using (var wb = new WebClient()) 
    { 
     wb.Credentials = new NetworkCredential(UserName, Password); 
     wb.Headers.Add("Authorization", "Basic " + authInfo); 

     var data = new NameValueCollection(); 
     data["Name"] = Name; 
     data["CharacterRace"] = CharacterRace; 
     data["CharacterClass"] = CharacterClass; 
     data["AutoSave"] = AutoSave.ToString(); 

     var response = wb.UploadValues(path, "POST", data); 

    } 
} 

そして、私は私の.NET ApiController(System.Web.Http)を持っている:私は私をポイントすると

[Route("api/CharacterGeneration/createNew")] 
    public IHttpActionResult PostNewCharacter([FromBody] string value) 
    { 
     //create new instance of PlayerServiceConnector 
     var player = new PlayerServiceConnector(); 

     //not sure what to do here... 
    //how do I get the WebClient part to POST in PlayerServiceConnector? 
     //what do I return? 

     return NoContent(); 
    } 

私の問題/質問は、ブラウザを "api/CharacterGeneration/createNew"に設定すると、データがPOSTされ、クライアントに何が返されるのを確認するのですか?それは私が困惑し混乱しているところです。

ありがとうございます!

+1

RestSharp(または同様のもの)についての調査をお勧めします。この種のものには非常に便利です。 http://restsharp.org/ – nurdyguy

答えて

1

コードの例は、文字列のリストをreturnign:

public IHttpActionResult PostNewCharacter([FromBody] string value) 
{ 
    var list = new List<string>(); 
    list.Add("something"); 
    list.Add("something else"); 
    return Json(list); 
} 

は、ブラウザ上で実行されている、あなたのコネクタから実行されているJSON構造に

を文字列を出力しますと、あなたが解析できるJSON構造を返します。プロキシクラスに追加します。

フレームワークでJsonを解析する場合は、http://www.newtonsoft.com/jsonを使用するか、Visual Studio内でNuGetでnewtonsoftを検索します。誰もが生きている私はJsonのためにnewtonsoftを使用することを知っています

+0

処理するシステムのAPIにデータを投稿しているので、私は '返品'の部分と混同します...返品Jsonのリストで何をしますか?ありがとう! – SkyeBoniwell

+0

@ 999cm999どこにデータをAPIにポストしていますか? 'createNew'メソッドはどこで呼びますか? – maxshuty

+1

@ 999cm999あなたは私があなたに送ったフレームワークからJsonConvert.DeserializeObjectを使ってデシリアライズします – RollRoll

1

あなたの質問の返品部分については、あなたが投稿したデータを指すことができます。

return Redirect(new Uri(url), HttpStatusCode.Created); 

urlは、取得したばかりのデータを取得するためのURLを取得するためのURLになります。

var url = Url.Link("Name of your Get route", new object()); 

あなたのオブジェクトは、getルートのパラメータ要件によって異なります。

1
[Route("api/CharacterGeneration")] 
    public IHttpActionResult AddNewCharacter([FromBody] Character character) 
    { 
     if (character == null) 
      return BadRequest(); 

     // put your code for adding the new character here 
     // either from your repository or db context 

     // return response of 201 if you created the resource successfully 
     // typically return this with a uri to the new resource 
     return Created("new location", characterYouCreated); 
    } 
関連する問題