2016-03-19 13 views
2

Mesaj dize isteği

[HttpPost()] 
public IActionResult Post([FromBody]string value) 
{ 
    if (value == null) 
    { 
     return new HttpStatusCodeResult(400); 
    } 
    else 
    { 
     return new HttpStatusCodeResult(200); 
    } 
} 

Ben isteği alındı ​​alır

using(var client = new HttpClient()) 
{ 
    var content = new StringContent("test test"); 
    var response = client.PostAsync("http://localhost:57316/api/values", content).Result; 
    var responseString = response.Content.ReadAsStringAsync().Result; 
    Console.WriteLine(responseString); 
} 

başka bir uygulamanın HttpClient kullanarak ona postayı bir dize çalışıyorum ben bir asp.net çekirdek WebAPI bu Mesaj isteği işleyicisi var Yukarıdaki işleyicide hata ayıkladım, ancak değer her zaman boş, ben "test test" olmasını beklerim, yanlış mı yapıyorum?

+0

? alıkoyan bu dönüş şey? – Christos

+0

@Christos evet ama aynı zamanda Post'' kodunu paylaşabilir misiniz şey – Bread

+0

dönmeden çalışması gerekir? Ben bir şey olduğunu düşünüyorum Bu yöntemin gövdesinde doğru değil – Christos

cevap

1

istek üzerine açık bir Content-Type ayarı değiliz gibi, mümkün ASP.NET Web API JSON olarak yorumlayarak, ancak (tırnak işaretleri olmadan kendi başına,) "test test" gibi başarısız olacaktır geçerli JSON değil bu.

Bunlardan biri deneyin:

  1. isteğin Content-Type başlık için "metin/düz" olarak ayarlayın.
  2. JSON okuyucular genellikle tek değerleri sevmiyorum gibi yani new StringContent("\"test test\"");
  3. göndermek (çift tırnak geçerli bir JavaScript dize olarak değerini göndermeyi deneyin bazı POCO olarak talep türünü ayarlamak ve dize bu şekilde ayarlayabilirsiniz. Post` `türü geçersizdir Neden