C# 如何在WebClient中指定消息正文?

C# 如何在WebClient中指定消息正文?,c#,azure,authorization,webclient,token,C#,Azure,Authorization,Webclient,Token,在控制台中,我跟踪我所在站点正在进行的呼叫,我可以看到地址(some.site.com/gettoken)、消息头和FF调用消息体的内容。在后者中,我可以看到我在正在发送的站点上输入的凭据 所以,我得到了URL和消息正文。然后,我尝试在Azure服务层中使用C#实现这种行为,就像这样 String url = @"https://some.site.com/gettoken"; String credentials = "username=super&password=secret";

在控制台中,我跟踪我所在站点正在进行的呼叫,我可以看到地址(some.site.com/gettoken)、消息头和FF调用消息体的内容。在后者中,我可以看到我在正在发送的站点上输入的凭据

所以,我得到了URL和消息正文。然后,我尝试在Azure服务层中使用C#实现这种行为,就像这样

String url = @"https://some.site.com/gettoken";
String credentials = "username=super&password=secret";
using (WebClient client = new WebClient())
{
  String output = client.UploadString(url, credentials);
  result = output;
}
然而,我得到了错误400-糟糕的结果。我错过了什么


我在谷歌上搜索过,但唯一与之相关的是我使用过的上传方法。我是完全找错人了,还是遗漏了一些小东西?似乎能让它发挥作用,但他们并没有在周围做标记。我还不能确定它是否相关。

因此,作为评论中讨论内容的总结:您可以使用
HttpClient

请注意,这是正确的,而不是错误的

示例实现可能如下所示:

public async Task<string> SendCredentials()
{
    string url = @"https://some.site.com/gettoken";
    string credentials = "username=super&password=secret";
    using(var client = new HttpClient())
    {
        var response = await client.PostAsync(url, new StringContent(credentials));
        return await response.Content.ReadAsStringAsync();
    }
}
公共异步任务SendCredentials()
{
字符串url=@“https://some.site.com/gettoken";
string credentials=“username=super&password=secret”;
使用(var client=new HttpClient())
{
var response=wait client.PostAsync(url,新的StringContent(凭证));
return wait response.Content.ReadAsStringAsync();
}
}
您可能还对哪个允许您传入参数及其值感兴趣,这样您就不必自己构造
凭证


.

你能用吗?您的代码将是
client.PostAsync(url,新的HttpStringContent(凭据))然后。或者
newformurlencodedcontent
,如果不手动生成字符串。我不完全确定
WebClient
是如何做到这一点的。有人建议我使用WebClient,因为它比HttpWebRequest更平滑,但a说HttpClient更新/更好,所以可以肯定,为什么不呢。然而,异步部分让我有点担心。在做任何其他事情之前,我需要获得令牌。同步似乎是最安全的方式,不是吗?如果你只是等待电话,你会没事的;在调用完成之前,方法的执行不会继续。嗯。。。似乎我找不到HttpStringContent。只有HttpContent,它有一个空构造函数。。。当然,我确实引用了HttpClient的ass。还有什么呢?你打字了吗?Http.StringContent?此外,我只能在返回的任务对象中找到Wait no Wait。是吗?是
System.net.http.StringContent
。至于等待:这是第三方物流的一部分,更多信息如下: