我使用以下代码将消息发布到服务器。
String credentials="email=me@here.com&pass=abc123";
using (HttpClient client = new HttpClient())
{
HttpResponseMessage message = await client.PostAsync(
url, new StringContent(credentials));
result = await message.Content.ReadAsStringAsync();
}
但是,服务器会回复一条错误消息,指出电子邮件或通行证不在那里。
{\" status \":\"错误\",\"消息\":\"电子邮件或通行证丢失\"}
现在,我可以看到它撒谎,但可以做些什么呢?我不提供凭证作为发布数据(相当于"参数"如果从FF中的URL行调用,可以看到,如下图所示?
我还注意到,当我访问 RequestMessage 时,我得到的网址但没有已发送的凭据。我错过了什么愚蠢的事情?!
result = message.RequestMessage.ToString();
这个结果给了我以下字符串。
方法:POST,RequestUri:' https://server.com/gettoken' ;,版本:1.1,内容:System.Net.Http.StringContent,标题:\ u000d \ u000a {\ u000d \ u000a内容类型:text / plain; charset = utf-8 \ u000d \ u000a内容长度:56 \ u000d \ u000a}
答案 0 :(得分:4)
您应该使用FormUrlEncodedContent
来传递您的POST数据,而不是StringContent
个对象。
var credentials = new FormUrlEncodedContent(new[] {
new KeyValuePair<string, string>("email", "me@here.com"),
new KeyValuePair<string, string>("pass", "abc123")
});
using (HttpClient client = new HttpClient())
{
HttpResponseMessage message = await client.PostAsync(
url, credentials);
result = await message.Content.ReadAsStringAsync();
}