2016-09-16 3 views
0

私の人生にとっては、これを動作させることはできません。私は404C#からWebApi2にポストする

ここWebApi2コードです得続ける:

[HttpPost] 
    public IHttpActionResult Post(string testString) 
    { 
     if(!string.IsNullOrEmpty(testString)) 
     { 
      return Ok(testString); 
     } 
     else 
     { 
      return BadRequest(); 
     } 
    } 

はここでWebClientのコードです:

public async Task PostingToWebServiceShouldWork() 
    { 
     var apiEndPoint = new Uri(String.Format("{0}/Paging", ConfigurationManager.AppSettings["ApiEndpoint"].ToString())); 
     var apiRoot = new Uri(apiEndPoint.GetLeftPart(UriPartial.Authority)); 
     var apiCall = apiEndPoint.PathAndQuery.Substring(1, apiEndPoint.PathAndQuery.Length - 1); 
     using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true })) 
     { 
      client.BaseAddress = apiRoot; 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      HttpContent content = new StringContent("testSTring"); 
      HttpResponseMessage response = await client.PostAsync(apiCall, content); 

      if(response.IsSuccessStatusCode) 
      { 

      } 
     } 
    } 

私はちょうどWebサービスへの単純な文字列を投稿したいです。これは死んだ単純なものでなければならず、それは私に片頭痛、笑を与えている。私は考えることができるすべてを試してきましたが、私はいくつかの小さな詳細を欠落している必要があります...

ありがとう!

答えて

1

APIエンドポイントは単にオブジェクトではなく文字列であるため、WebAPIはその文字列をクエリ文字列パラメータとして探しています。

  1. URLに代わりのボディ(作品に文字列を送信しますが、あなたがつもりなら、あなたのアクションの定義で[FromBody]属性

    public IHttpActionResult Post([FromBody] string testString) 
    
  2. を使用してください:あなたは2つのオプションがありますセキュリティのためにHTTPSを介してこれを使用すると、投稿されたものを公開します)

深く説明と例

ため http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-apiを参照してください。 10
+0

私のサービスでブレークポイントを叩いてみましたが、パラメータ文字列の値は ""(string.empty)です。そこから、単純な文字列をC#からWeb api2にPOSTする? – John

+0

Webサービスに投稿するコードを投稿できますか?私はあなたの問題が実際に何らかの形でそれをやっているかどうか疑問に思っています。 – grayimp

+0

これは、最終的にFiddlerをプルダウンし、問題を発見しました - 明らかにStreamWriterを使用していることが原因です。 UTF-8でエンコードされたバイト[]に行き、通常のStream.Writeを使用しました。データが流れるはずです。正しい方向に私を指してくれてありがとう:) – John

関連する問題