How to specify message body in a WebClient?

喜欢而已 提交于 2019-12-11 23:45:51

问题


In the console, I follow up a call the site I'm on is is making and I can see the address (some.site.com/gettoken), message header and something that FF calls Message Body. It's in the latter that I can see the credentials that I've entered on the site that are being sent.

So, I've got the URL and the message body. Then, I've tried to implement the behavior using C# for my Azure service layer like so.

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;
}

However, I get error 400 - bad result. What did I miss?

I've googled for some stuff but the only remotely relevant hits are talking about the upload methods, which I've used. Am I barking up the wrong tree entirely or just missing something tiny? Some people seem to get it to work but they're not tokenizing around. And I'm not certain enough to determine whether it's of relevance or not.


回答1:


So, as a summary of what has been discussed in the comments: you can use the more modern HttpClient instead.

Note that this is the System.Net.Http.HttpClient and not Windows.Web.Http.HttpClient.

An example implementation could look like this:

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();
    }
}

You might also be interested in System.Net.Http.FormUrlEncodedContent which allows you to pass in the parameters and their values so you don't have to construct the credentials value yourself.

More information on async/await.



来源:https://stackoverflow.com/questions/26893538/how-to-specify-message-body-in-a-webclient

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!