我不认为它必须是成对的,所以如果我发送如下的纯文本:
HttpClient httpClient = new HttpClient();
httpClient.PostAsync("http://hey.com",
new StringContent("simple string, no key value pair."));
然后下面的FormCollection似乎没有提供一种方法来阅读..
public ActionResult Index(FormCollection collection){
//how to get the string I sent from collection?
}
答案 0 :(得分:1)
FormCollection
对象是键值对集合。如果您要发送一个简单的字符串,那么除非将其格式化为Key \ Value对,否则该集合将为空。
这可以通过多种方式完成。
选项1:发送键值对,FormCollection
将使用键myString
读取您的字符串:
HttpClient httpClient = new HttpClient();
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("mystring", "My String Value")
});
httpClient.PostAsync("http://myUrl.com", content);
选项2:直接从请求中读取内容。这会将原始Request.InputStream
读入StreamReader
到字符串
public ActionResult ReadInput()
{
this.Request.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
string myString = "";
using (var reader = new StreamReader(this.Request.InputStream))
{
myString = reader.ReadToEnd();
}
}
还有更多选择,但这些方法中的任何一种都应该做到这一点