2016-09-16 15 views
0

Ich kann nicht für das Leben von mir bekommen dies zu arbeiten. Ich halte 404.POSTing zu WebApi2 von C#

Hier ist der WebApi2 Code bekommen:

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

Hier ist der Code 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) 
      { 

      } 
     } 
    } 

ich einen einfachen String an den Webdienst nur zu stellen. Das sollte tot einfach sein, und es gibt mir eine Migräne, lol. Ich habe alles versucht, was mir einfiel, und ich muss ein kleines Detail vermissen ...

Danke!

Antwort

1

Da Ihr API-Endpunkt einfach eine Zeichenfolge anstelle eines Objekts ist, sucht WebAPI diese Zeichenfolge als Abfragezeichenfolgenparameter. Sie haben zwei Möglichkeiten:

  1. Mit dem [FromBody] Attribut in der Definition Ihrer Aktion des

    public IHttpActionResult Post([FromBody] string testString) 
    
  2. die Zeichenfolge auf die URL senden, anstatt in den Körper (Arbeiten, aber wenn du gehst für die Sicherheit über HTTPS macht das, was Sie veröffentlichen)

Siehe http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api für eine tiefere Erklärung und Beispiele

+0

Versucht, dass, und ich bin der Haltepunkt in meinem Service, aber meine Parameter Zeichenfolge Wert ist "" (string.empty) .... Gibt es ein klares Beispiel POST eine einfache Zeichenfolge von C# zu Web-API-2 da draußen ? – John

+0

Können Sie Ihren Code posten, der an den Webdienst gesendet wird? Ich frage mich, ob dein Problem tatsächlich so ist, wie du es tust. – grayimp

+0

Es war - schließlich Fiddler heruntergezogen und das Problem gefunden - offenbar mit einem StreamWriter verursachte mein Problem. Ging zu einem UTF-8-codierten Byte [], benutzte einen normalen Stream.Write, und jetzt fließen die Daten wie es sollte! Danke, dass du mich in die richtige Richtung gelenkt hast :) – John